FreeCalypso > hg > fc-sim-tools
comparison uicc/writecmd.c @ 84:0c19ec7af526
fc-uicc-tool update-rec: support prev mode like fc-simtool
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 11 Apr 2021 02:46:49 +0000 |
parents | b70d35f5476f |
children | c179deb9bb39 |
comparison
equal
deleted
inserted
replaced
83:3055d5c9e7a3 | 84:0c19ec7af526 |
---|---|
43 } | 43 } |
44 | 44 |
45 cmd_update_rec(argc, argv) | 45 cmd_update_rec(argc, argv) |
46 char **argv; | 46 char **argv; |
47 { | 47 { |
48 unsigned recno; | 48 unsigned recno, mode; |
49 u_char data[255]; | 49 u_char data[255]; |
50 int rc; | 50 int rc; |
51 | 51 |
52 if (!last_sel_file_record_len) { | 52 if (!last_sel_file_record_len) { |
53 fprintf(stderr, "error: no record-based file selected\n"); | 53 fprintf(stderr, "error: no record-based file selected\n"); |
54 return(-1); | 54 return(-1); |
55 } | 55 } |
56 recno = strtoul(argv[1], 0, 0); | 56 if (!strcmp(argv[1], "prev")) { |
57 if (recno < 1 || recno > 255) { | 57 recno = 0; |
58 fprintf(stderr, | 58 mode = 0x03; |
59 } else { | |
60 recno = strtoul(argv[1], 0, 0); | |
61 if (recno < 1 || recno > 255) { | |
62 fprintf(stderr, | |
59 "error: record number argument is out of range\n"); | 63 "error: record number argument is out of range\n"); |
60 return(-1); | 64 return(-1); |
65 } | |
66 mode = 0x04; | |
61 } | 67 } |
62 rc = read_hex_data_file(argv[2], data, 255); | 68 rc = read_hex_data_file(argv[2], data, 255); |
63 if (rc < 0) | 69 if (rc < 0) |
64 return(rc); | 70 return(rc); |
65 if (rc != last_sel_file_record_len) { | 71 if (rc != last_sel_file_record_len) { |
66 fprintf(stderr, "error: hex data length != EF record length\n"); | 72 fprintf(stderr, "error: hex data length != EF record length\n"); |
67 return(-1); | 73 return(-1); |
68 } | 74 } |
69 return update_rec_op(recno, 0x04, data, last_sel_file_record_len); | 75 return update_rec_op(recno, mode, data, last_sel_file_record_len); |
70 } | 76 } |