comparison simtool/pberase.c @ 10:ddd767f6e15b

fc-simtool ported over
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 14 Mar 2021 07:11:25 +0000
parents
children
comparison
equal deleted inserted replaced
9:c9ef9e91dd8e 10:ddd767f6e15b
1 /*
2 * This module implements the pb-erase family of commands.
3 */
4
5 #include <sys/types.h>
6 #include <string.h>
7 #include <strings.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include "simresp.h"
11 #include "curfile.h"
12
13 cmd_pb_erase(argc, argv)
14 char **argv;
15 {
16 int rc;
17 unsigned recno;
18 u_char record[255];
19
20 rc = phonebook_op_common(argv[1]);
21 if (rc < 0)
22 return(rc);
23 memset(record, 0xFF, curfile_record_len);
24 for (recno = 1; recno <= curfile_record_count; recno++) {
25 rc = update_rec_op(recno, 0x04, record, curfile_record_len);
26 if (rc < 0)
27 return(rc);
28 }
29 return(0);
30 }
31
32 cmd_pb_erase_one(argc, argv)
33 char **argv;
34 {
35 int rc;
36 unsigned recno;
37 u_char record[255];
38
39 rc = phonebook_op_common(argv[1]);
40 if (rc < 0)
41 return(rc);
42 recno = strtoul(argv[2], 0, 0);
43 if (recno < 1 || recno > curfile_record_count) {
44 fprintf(stderr, "error: specified record number is invalid\n");
45 return(-1);
46 }
47 memset(record, 0xFF, curfile_record_len);
48 return update_rec_op(recno, 0x04, record, curfile_record_len);
49 }
50
51 cmd_pb_erase_range(argc, argv)
52 char **argv;
53 {
54 int rc;
55 unsigned recno, startrec, endrec;
56 u_char record[255];
57
58 rc = phonebook_op_common(argv[1]);
59 if (rc < 0)
60 return(rc);
61 startrec = strtoul(argv[2], 0, 0);
62 if (startrec < 1 || startrec > curfile_record_count) {
63 fprintf(stderr,
64 "error: specified starting record number is invalid\n");
65 return(-1);
66 }
67 if (!strcmp(argv[3], "end"))
68 endrec = curfile_record_count;
69 else {
70 endrec = strtoul(argv[3], 0, 0);
71 if (endrec < 1 || endrec > curfile_record_count) {
72 fprintf(stderr,
73 "error: specified final record number is invalid\n");
74 return(-1);
75 }
76 if (startrec > endrec) {
77 fprintf(stderr,
78 "error: reverse record range specified\n");
79 return(-1);
80 }
81 }
82 memset(record, 0xFF, curfile_record_len);
83 for (recno = startrec; recno <= endrec; recno++) {
84 rc = update_rec_op(recno, 0x04, record, curfile_record_len);
85 if (rc < 0)
86 return(rc);
87 }
88 return(0);
89 }