comparison rvinterf/etmsync/fswrite.c @ 910:d1333db6385f

rvinterf/etmsync refactoring: operation functions consolidated in fileio.c
author Space Falcon <falcon@ivan.Harhan.ORG>
date Tue, 08 Sep 2015 06:34:02 +0000
parents 3dd74b16df82
children
comparison
equal deleted inserted replaced
909:16ed75e266f2 910:d1333db6385f
17 #include "localstruct.h" 17 #include "localstruct.h"
18 #include "exitcodes.h" 18 #include "exitcodes.h"
19 19
20 extern u_char rvi_msg[]; 20 extern u_char rvi_msg[];
21 extern int rvi_msg_len; 21 extern int rvi_msg_len;
22
23 do_mkdir_existok(pathname)
24 char *pathname;
25 {
26 u_char cmdpkt[MAX_PKT_TO_TARGET], *dp;
27 int rc, slen;
28 struct stat_info stat;
29
30 slen = strlen(pathname);
31 if (slen >= TMFFS_STRING_SIZE) {
32 printf("error: pathname arg exceeds string length limit\n");
33 return(ERROR_USAGE);
34 }
35 dp = cmdpkt + 1;
36 *dp++ = ETM_FFS2;
37 *dp++ = TMFFS_MKDIR;
38 *dp++ = slen + 1;
39 strcpy(dp, pathname);
40 dp += slen + 1;
41 rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1);
42 if (rc)
43 return(rc);
44 if (rvi_msg_len != 5) {
45 printf("error: mkdir response has wrong length\n");
46 return(ERROR_TARGET);
47 }
48 if (!rvi_msg[3]) /* success */
49 return(0);
50 if (rvi_msg[3] != TMFFS_ERR_EXISTS) {
51 report_ffs_err("mkdir", rvi_msg[3]);
52 return(ERROR_TARGET);
53 }
54 /* object already exists: OK if it's a directory, error otherwise */
55 rc = do_xlstat(pathname, &stat);
56 if (rc)
57 return(rc);
58 if (stat.type == OT_DIR)
59 return(0);
60 else {
61 printf("error: %s exists and is not a directory\n", pathname);
62 return(ERROR_TARGET);
63 }
64 }
65 22
66 cmd_mkdir(argc, argv) 23 cmd_mkdir(argc, argv)
67 char **argv; 24 char **argv;
68 { 25 {
69 return do_mkdir_existok(argv[1]); 26 return do_mkdir_existok(argv[1]);