FreeCalypso > hg > freecalypso-sw
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]); |