FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/fswrite.c @ 840:25a182bc031b
rvinterf/include/audio.h: create interface definitions
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 31 Jul 2021 07:33:58 +0000 | 
| parents | a0754c98fc2b | 
| children | 
| rev | line source | 
|---|---|
| 
0
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 * FFS write operation commands | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 */ | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 #include <sys/types.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 #include <ctype.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 #include <stdio.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 #include <stdlib.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 #include <string.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 #include <strings.h> | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 #include "etm.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 #include "ffs.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
13 #include "ffserr.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 #include "tmffs2.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
15 #include "limits.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 #include "localtypes.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 #include "localstruct.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 #include "exitcodes.h" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 extern u_char rvi_msg[]; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 extern int rvi_msg_len; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 cmd_mkdir(argc, argv) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 char **argv; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 return do_mkdir_existok(argv[1]); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 cmd_delete(argc, argv) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 char **argv; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 { | 
| 
592
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
32 char *pathname; | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
33 int minusf_mode; | 
| 
0
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 | 
| 
592
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
35 if (argc == 2) { | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
36 pathname = argv[1]; | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
37 minusf_mode = 0; | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
38 } else { | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
39 if (strcmp(argv[1], "-f")) { | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
40 fprintf(stderr, "usage: rm [-f] ffs_pathname\n"); | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
41 return(ERROR_USAGE); | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
42 } | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
43 pathname = argv[2]; | 
| 
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
44 minusf_mode = 1; | 
| 
0
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 } | 
| 
592
 
a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
306 
diff
changeset
 | 
46 return do_ffs_remove(pathname, minusf_mode); | 
| 
0
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 hexdigit(c) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 if (isdigit(c)) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 return(c - '0'); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 else if (isupper(c)) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 return(c - 'A' + 10); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 else | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 return(c - 'a' + 10); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 fwrite_hex_string(pathname, strarg) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 char *pathname, *strarg; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 u_char buf[256]; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 int maxlen, len; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 char *cp; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 maxlen = max_short_file_write(pathname); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 for (cp = strarg, len = 0; ; cp += 2) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 while (isspace(*cp)) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
69 cp++; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
70 if (!*cp) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
71 break; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
72 if (!isxdigit(cp[0]) || !isxdigit(cp[1])) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
73 fprintf(stderr, "error: invalid hex string argument\n"); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
74 return(ERROR_USAGE); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
75 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
76 if (len >= maxlen) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
77 fprintf(stderr, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
78 "error: hex string exceeds write packet limit\n"); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
79 return(ERROR_USAGE); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
80 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
81 buf[len++] = hexdigit(cp[0]) << 4 | hexdigit(cp[1]); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
82 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
83 return do_short_fwrite(pathname, buf, len); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
84 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
85 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
86 fwrite_from_file(pathname, srcfile) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
87 char *pathname, *srcfile; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
88 { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
89 u_char buf[240]; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
90 FILE *srcf; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
91 int rc, cc, first, tfd; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
92 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
93 srcf = fopen(srcfile, "r"); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
94 if (!srcf) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
95 perror(srcfile); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
96 return(ERROR_UNIX); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
97 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
98 for (first = 1; cc = fread(buf, 1, sizeof buf, srcf); first = 0) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
99 if (first) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
100 if (cc < sizeof buf && | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
101 cc <= max_short_file_write(pathname)) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
102 fclose(srcf); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
103 return do_short_fwrite(pathname, buf, cc); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
104 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
105 rc = fd_open(pathname, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
106 FFS_O_WRONLY | FFS_O_CREATE | FFS_O_TRUNC, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
107 &tfd); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
108 if (rc) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
109 fclose(srcf); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
110 return(rc); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
111 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
112 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
113 rc = fd_write(tfd, buf, cc); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
114 if (rc) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
115 fclose(srcf); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
116 fd_close(tfd); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
117 return(rc); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
118 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
119 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
120 fclose(srcf); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
121 if (first) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
122 /* 0 length file: do an open-for-write to create it */ | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
123 rc = fd_open(pathname, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
124 FFS_O_WRONLY | FFS_O_CREATE | FFS_O_TRUNC, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
125 &tfd); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
126 if (rc) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
127 return(rc); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
128 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
129 return fd_close(tfd); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
130 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
131 | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
132 cmd_fwrite(argc, argv) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
133 char **argv; | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
134 { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
135 if (strlen(argv[1]) >= TMFFS_STRING_SIZE) { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
136 fprintf(stderr, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
137 "error: pathname arg exceeds string length limit\n"); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
138 return(ERROR_USAGE); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
139 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
140 if (!strcmp(argv[2], "ascii")) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
141 return do_short_fwrite(argv[1], argv[3], strlen(argv[3])); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
142 else if (!strcmp(argv[2], "hex")) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
143 return fwrite_hex_string(argv[1], argv[3]); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
144 else if (!strcmp(argv[2], "file")) | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
145 return fwrite_from_file(argv[1], argv[3]); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
146 else { | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
147 fprintf(stderr, | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
148 "error: middle argument to fwrite cmd must be \"ascii\", \"hex\" or \"file\"\n" | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
149 ); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
150 return(ERROR_USAGE); | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
151 } | 
| 
 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
152 } | 
| 
306
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
153 | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
154 write_buf_to_file(pathname, data, datalen) | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
155 char *pathname; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
156 u_char *data; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
157 { | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
158 int tfd, rc, chunk, remain; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
159 | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
160 if (datalen <= max_short_file_write(pathname)) | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
161 return do_short_fwrite(pathname, data, datalen); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
162 /* do it the long way */ | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
163 rc = fd_open(pathname, FFS_O_WRONLY | FFS_O_CREATE | FFS_O_TRUNC, &tfd); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
164 if (rc) | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
165 return(rc); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
166 for (remain = datalen; remain; remain -= chunk) { | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
167 chunk = remain; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
168 if (chunk > 240) | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
169 chunk = 240; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
170 rc = fd_write(tfd, data, chunk); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
171 if (rc) { | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
172 fd_close(tfd); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
173 return(rc); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
174 } | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
175 data += chunk; | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
176 } | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
177 return fd_close(tfd); | 
| 
 
8136fb5eb292
fc-fsio: write_buf_to_file() function made global in prep for upload-rf-table
 
Mychaela Falconia <falcon@freecalypso.org> 
parents: 
0 
diff
changeset
 | 
178 } | 
