FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/fsnew.c @ 441:1dcc9e4b71fd
target-utils/calversion: program written, compiles
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Wed, 26 Dec 2018 06:40:02 +0000 |
| parents | 0cb766828d7a |
| children | 003e48f8ebe1 |
| rev | line source |
|---|---|
|
321
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * In this module we are going to implement the commands that upload |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * new FreeCalypso-invented stuff into the FFS of our FC devices. |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <sys/wait.h> |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <unistd.h> |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "exitcodes.h" |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 char batterytab_compile_tool[] = "/opt/freecalypso/bin/compile-fc-batt"; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 char charging_compile_tool[] = "/opt/freecalypso/bin/compile-fc-chg"; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 upload_fc_table_from_ascii(asciisrc, compiletool, ffs_pathname) |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 char *asciisrc, *compiletool, *ffs_pathname; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 char tmpfile[] = "/tmp/fc-fsioXXXXXX"; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 int tmpfd; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 pid_t child, waitres; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int status, rc; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 tmpfd = mkstemp(tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if (tmpfd < 0) { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 fprintf(stderr, "unable to get temp file via mkstemp()\n"); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 return(ERROR_UNIX); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 close(tmpfd); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 child = vfork(); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 if (child < 0) { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 fprintf(stderr, "unable to vfork to run compiler tool\n"); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 unlink(tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 return(ERROR_UNIX); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 if (!child) { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 execl(compiletool, compiletool, asciisrc, tmpfile, 0); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 perror(compiletool); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 _exit(ERROR_UNIX); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 waitres = waitpid(child, &status, 0); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 if (waitres != child || !WIFEXITED(status)) { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 fprintf(stderr, "unexpected wait result after compiler run\n"); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 unlink(tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 return(ERROR_UNIX); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 rc = WEXITSTATUS(status); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 if (rc) { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 unlink(tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 return rc; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 rc = fwrite_from_file(ffs_pathname, tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 unlink(tmpfile); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 return rc; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 cmd_write_battery_table(argc, argv) |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 char **argv; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 return upload_fc_table_from_ascii(argv[1], batterytab_compile_tool, |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 "/etc/batterytab"); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 } |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 cmd_write_charging_config(argc, argv) |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 char **argv; |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 { |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 return upload_fc_table_from_ascii(argv[1], charging_compile_tool, |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 "/etc/charging"); |
|
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 } |
