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 }