Троан Эрик В.
Шрифт:
71:
72: name = argv[0];
73: phone = argv[1];
74:
75: /* открыть базу данных для записи */
76: if (!(dp = openDatabase(1))) return 1;
77:
78: /* если не перезаписывается существующий элемент,
79: проверить, не используется ли уже это имя */
80: if (!overwrite) {
81: flag = DP_DKEEP;
82: } else {
83: flag = DP_DOVER;
84: }
85:
86: if (!dpput(dp, name, -1, phone, -1, flag)) {
87: if (dpecode == DP_EKEEP) {
88: fprintf(stderr, "%s уже существует\n", name);
89: } else {
90: fprintf(stderr, "сбой записи: %s\n", dperrmsg(dpecode));
91: }
92:
93: rc = 1;
94: }
95:
96: dpclose(dp);
97:
98: return rc;
99: }
100:
101: /* найти имя и вывести номер телефона, с которым оно связано;
102: напрямую разобрать командную строку */
103: int queryRecord(int argc, char ** argv) {
104: DEPOT * dp;
105: int rc;
106: char * phone;
107:
108: /* ожидается только один аргумент, имя для поиска */
109: if (argc != 1) usage;
110:
111: /* открыть базу данных для чтения */
112: if (!(dp = openDatabase(0))) return 1;
113:
114: phone = dpget(dp, argv[0], -1, 0, -1, NULL);
115: if (!phone) {
116: if (dpecode == DP_ENOITEM)
117: fprintf(stderr, "%s не существует\n", argv[0]);
118: else
119: fprintf(stderr, "ошибка чтения базы данных: %s\n"
120: dperrmsg(dpecode));
121:
122: rc = 1;
123: } else {
124: printf("%s %s\n", argv[0], (char *) phone);
125: rc = 0;
126: }
127:
128: dpclose(dp);
129:
130: return rc;
131: }
132:
133: /* удалить определенную запись; имя передается в качестве
134: аргумента командной строки */
135: int delRecord(int argc, char ** argv) {
136: DEPOT * dp;
137: int rc;
138:
139: /* ожидается только один аргумент */
140: if (argc != 1) usage;
141:
142: /* открыть базу данных для обновления */
143: if (!(dp = openDatabase(1))) return 1;
144:
145: if (!(rc = dpout(dp, argv[0], -1))) {
146: if (dpecode == DP_ENOITEM)
147: fprintf(stderr, "%s не существует\n", argv[0]);
148: else
149: fprintf(stderr, "ошибка удаления элемента: %s\n",
150: dperrmsg(dpecode));
151:
152: rc = 1;
153: }
154:
155: dpclose(dp);
156:
157: return rc;
158: }
159:
160: /* вывести список всех записей, имеющихся в базе данных */
161: int listRecords(void) {
162: DEPOT * dp;
163: char * key, * value;