comparison simtool/smsp_erase.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 smsp-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 "curfile.h"
11
12 cmd_smsp_erase_all(argc, argv)
13 char **argv;
14 {
15 int rc;
16 unsigned recno;
17 u_char record[255];
18
19 rc = select_ef_smsp();
20 if (rc < 0)
21 return(rc);
22 memset(record, 0xFF, curfile_record_len);
23 for (recno = 1; recno <= curfile_record_count; recno++) {
24 rc = update_rec_op(recno, 0x04, record, curfile_record_len);
25 if (rc < 0)
26 return(rc);
27 }
28 return(0);
29 }
30
31 cmd_smsp_erase_one(argc, argv)
32 char **argv;
33 {
34 int rc;
35 unsigned recno;
36 u_char record[255];
37
38 rc = select_ef_smsp();
39 if (rc < 0)
40 return(rc);
41 recno = strtoul(argv[1], 0, 0);
42 if (recno < 1 || recno > curfile_record_count) {
43 fprintf(stderr, "error: specified record number is invalid\n");
44 return(-1);
45 }
46 memset(record, 0xFF, curfile_record_len);
47 return update_rec_op(recno, 0x04, record, curfile_record_len);
48 }
49
50 cmd_smsp_erase_range(argc, argv)
51 char **argv;
52 {
53 int rc;
54 unsigned recno, startrec, endrec;
55 u_char record[255];
56
57 rc = select_ef_smsp();
58 if (rc < 0)
59 return(rc);
60 startrec = strtoul(argv[1], 0, 0);
61 if (startrec < 1 || startrec > curfile_record_count) {
62 fprintf(stderr,
63 "error: specified starting record number is invalid\n");
64 return(-1);
65 }
66 if (!strcmp(argv[2], "end"))
67 endrec = curfile_record_count;
68 else {
69 endrec = strtoul(argv[2], 0, 0);
70 if (endrec < 1 || endrec > curfile_record_count) {
71 fprintf(stderr,
72 "error: specified final record number is invalid\n");
73 return(-1);
74 }
75 if (startrec > endrec) {
76 fprintf(stderr,
77 "error: reverse record range specified\n");
78 return(-1);
79 }
80 }
81 memset(record, 0xFF, curfile_record_len);
82 for (recno = startrec; recno <= endrec; recno++) {
83 rc = update_rec_op(recno, 0x04, record, curfile_record_len);
84 if (rc < 0)
85 return(rc);
86 }
87 return(0);
88 }