FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/fsnew.c @ 683:ecea01f65146
loadtools: implemented -t option for boot ROM wait timeout
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 10 Mar 2020 07:05:32 +0000 |
parents | 003e48f8ebe1 |
children | 2cd5ac909e23 |
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) { |
465
003e48f8ebe1
rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel
Mychaela Falconia <falcon@freecalypso.org>
parents:
321
diff
changeset
|
36 execl(compiletool, compiletool, asciisrc, tmpfile, (char *) 0); |
321
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 } |