FreeCalypso > hg > fc-pcsc-tools
annotate uicc/dumpdir.c @ 64:8cd4771bdd79
doc/User-oriented-commands: document started
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 14 Feb 2021 19:01:04 +0000 |
| parents | 1b1468869ccf |
| children | dcfec53643c5 |
| rev | line source |
|---|---|
|
22
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This module implements the dump of EF_DIR. |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <sys/types.h> |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdio.h> |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include "file_id.h" |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 cmd_dir() |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 { |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 int rc; |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 unsigned record_len, record_count; |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 unsigned recno; |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 rc = select_op(FILEID_MF); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 if (rc < 0) |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 return(rc); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 rc = select_op(EF_DIR); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 if (rc < 0) |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 return(rc); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 rc = select_resp_get_linear_fixed(&record_len, &record_count); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 if (rc < 0) |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 return(rc); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if (record_len < 5) { |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 fprintf(stderr, "error: EF_DIR record length is too short\n"); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 return(-1); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 for (recno = 1; recno <= record_count; recno++) { |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 rc = readrec_op(recno, 0x04, record_len); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 if (rc < 0) |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 return(rc); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 if (check_simresp_all_blank()) |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 continue; |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 printf("Record #%u:\n", recno); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 dump_efdir_record(); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 } |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 return(0); |
|
1b1468869ccf
new trimmed fc-uicc-tool is here
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 } |
