Changeset 4521 for trunk/Nebulous/nebclient/src/nebclient.c
- Timestamp:
- Jul 8, 2005, 11:55:38 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/Nebulous/nebclient/src/nebclient.c (modified) (28 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/nebclient/src/nebclient.c
r4520 r4521 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.c,v 1. 19 2005-07-08 21:32:18 jhoblitt Exp $6 * $Id: nebclient.c,v 1.20 2005-07-08 21:55:38 jhoblitt Exp $ 7 7 */ 8 8 … … 27 27 static bool nebSetErr(nebServer *server, const char *format, ...); 28 28 static bool nebSetServerErr(nebServer *server); 29 static off_t nebCopyFile( const char *source, const char *dest);30 static off_t nebCopyFilehandle( int sourceFH, int destFH);31 static int nebParseURI( const char *URI, char **filename);29 static off_t nebCopyFile(nebServer *server, const char *source, const char *dest); 30 static off_t nebCopyFilehandle(nebServer *server, int sourceFH, int destFH); 31 static int nebParseURI(nebServer *server, const char *URI, char **filename); 32 32 static bool nebNukeFile(const char *filename); 33 33 … … 76 76 } 77 77 78 if (!nebParseURI( (char *)response.result, &filename)) {78 if (!nebParseURI(server, (char *)response.result, &filename)) { 79 79 nebSetErr(server, "can not parse URI"); 80 80 … … 92 92 nebFree(filename); 93 93 94 if (URI) {95 *URI = xmalloc(strlen((char *)response.result));96 strcpy(*URI, (char *)response.result);97 }98 99 return file;100 }101 102 bool nebReplicate(nebServer *server, const char *key, const char *volume, char **URI)103 {104 struct ns1__replicate_USCOREobjectResponse response;105 char *filename;106 int sourceFH, destFH;107 108 if (soap_call_ns1__replicate_USCOREobject(server->soap, NULL, NULL, (char *)key, (char *)volume, (char **)&response) != SOAP_OK) {109 // server error110 return false;111 }112 113 if (!nebParseURI((char *)response.result, &filename)) {114 fprintf(stderr, "can not parse URI\n");115 116 return false;117 }118 119 94 // if URI is not NULL 120 95 if (URI) { … … 123 98 } 124 99 100 return file; 101 } 102 103 bool nebReplicate(nebServer *server, const char *key, const char *volume, char **URI) 104 { 105 struct ns1__replicate_USCOREobjectResponse response; 106 char *filename; 107 int sourceFH, destFH; 108 109 if (soap_call_ns1__replicate_USCOREobject(server->soap, NULL, NULL, 110 (char *)key, (char *)volume, (char **)&response) != SOAP_OK) { 111 nebSetServerErr(server); 112 113 return false; 114 } 115 116 if (!nebParseURI(server, (char *)response.result, &filename)) { 117 nebSetErr(server, "can not parse URI"); 118 119 return false; 120 } 121 125 122 // need a read lock 126 123 sourceFH = nebOpen(server, (char *)key, NEB_READ); 127 124 if (sourceFH == -1) { 128 fprintf(stderr, "can not open key %s\n", key);125 nebSetErr(server, "can not open key %s", key); 129 126 nebFree(filename); 130 127 … … 134 131 destFH = open(filename, O_RDWR|O_TRUNC, 0660); 135 132 if (destFH == -1) { 136 fprintf(stderr, "can not open %s: %s\n", filename, strerror(errno));133 nebSetErr(server, "can not open %s: %s\n", filename, strerror(errno)); 137 134 nebFree(filename); 138 135 … … 140 137 } 141 138 142 nebCopyFilehandle(s ourceFH, destFH);139 nebCopyFilehandle(server, sourceFH, destFH); 143 140 144 141 if (close(sourceFH) == -1) { 145 fprintf(stderr, "can not close file: %s", strerror(errno));142 nebSetErr(server, "can not close file: %s", strerror(errno)); 146 143 nebFree(filename); 147 144 … … 150 147 151 148 if (close(destFH) == -1) { 152 fprintf(stderr, "can not close %s: %s", filename, strerror(errno));149 nebSetErr(server, "can not close %s: %s", filename, strerror(errno)); 153 150 nebFree(filename); 154 151 … … 158 155 nebFree(filename); 159 156 157 // if URI is not NULL 158 if (URI) { 159 *URI = xmalloc(strlen((char *)response.result)); 160 strcpy(*URI, (char *)response.result); 161 } 162 160 163 return true; 161 164 } … … 166 169 167 170 if (nebFindInstances(server, key, NULL, &locations) < 2) { 168 fprintf(stderr, "can not cull - not enough instances");171 nebSetErr(server, "can not cull - not enough instances"); 169 172 170 173 return false; … … 236 239 } 237 240 238 if (!nebParseURI( locations[0], &filename)) {241 if (!nebParseURI(server, locations[0], &filename)) { 239 242 nebSetErr(server, "can not parse URI"); 240 243 nebFree(locations); … … 255 258 256 259 if (nebFindInstances(server, key, NULL, &locations) < 0) { 257 fprintf(stderr, "no instances found\n");258 259 return -1; 260 } 261 262 if (!nebParseURI( locations[0], &filename)) {263 fprintf(stderr, "can not parse URI\n");260 nebSetErr(server, "no instances found"); 261 262 return -1; 263 } 264 265 if (!nebParseURI(server, locations[0], &filename)) { 266 nebSetErr(server, "can not parse URI"); 264 267 265 268 return -1; … … 275 278 276 279 if (fh < 0) { 277 perror("open");280 nebSetErr(server, "open: %s", strerror(errno)); 278 281 279 282 return -1; … … 331 334 } 332 335 333 nebCopyFilehandle(s ourceFH, destFH);336 nebCopyFilehandle(server, sourceFH, destFH); 334 337 335 338 if (close(sourceFH) == -1) { … … 367 370 bool status; 368 371 369 if (!nebParseURI( URI, &filename)) {372 if (!nebParseURI(server, URI, &filename)) { 370 373 fprintf(stderr, "can not parse URI\n"); 371 374 … … 416 419 417 420 if (err_size < 0) { 418 fprintf(stderr, "failed to set error message \n");421 fprintf(stderr, "failed to set error message"); 419 422 420 423 return false; … … 446 449 } 447 450 448 static off_t nebCopyFile( const char *source, const char *dest)451 static off_t nebCopyFile(nebServer *server, const char *source, const char *dest) 449 452 { 450 453 int sourceFH; … … 454 457 sourceFH = open(source, O_RDONLY); 455 458 if (sourceFH == -1) { 456 fprintf(stderr, "can not open %s: %s\n", source, strerror(errno));459 nebSetErr(server, "can not open %s: %s", source, strerror(errno)); 457 460 458 461 return -1; … … 461 464 destFH = open(dest, O_WRONLY|O_CREAT|O_CREAT, 0600); 462 465 if (destFH == -1) { 463 fprintf(stderr, "can not open %s: %s\n", dest, strerror(errno));464 465 return -1; 466 } 467 468 bytesCopied = nebCopyFilehandle(s ourceFH, destFH);466 nebSetErr(server, "can not open %s: %s", dest, strerror(errno)); 467 468 return -1; 469 } 470 471 bytesCopied = nebCopyFilehandle(server, sourceFH, destFH); 469 472 if (bytesCopied < 0) { 470 473 return -1; … … 472 475 473 476 if (close(sourceFH) == -1) { 474 fprintf(stderr, "can not close %s: %s", source, strerror(errno));477 nebSetErr(server, "can not close %s: %s", source, strerror(errno)); 475 478 476 479 return -1; … … 478 481 479 482 if (close(destFH) == -1) { 480 fprintf(stderr, "can not close %s: %s", dest, strerror(errno));483 nebSetErr(server, "can not close %s: %s", dest, strerror(errno)); 481 484 482 485 return -1; … … 486 489 } 487 490 488 static off_t nebCopyFilehandle( int sourceFH, int destFH)491 static off_t nebCopyFilehandle(nebServer *server, int sourceFH, int destFH) 489 492 { 490 493 off_t bytesTotal; … … 495 498 496 499 if(fstat(sourceFH, &sourceStat)) { 497 fprintf(stderr, "can not stat filehandles: %s\n", strerror(errno));500 nebSetErr(server, "can not stat filehandles: %s", strerror(errno)); 498 501 499 502 return -1; … … 519 522 520 523 if (read(sourceFH, writeBuf, writeSize) != writeSize) { 521 fprintf(stderr, "can not read filehandle: %s", strerror(errno));524 nebSetErr(server, "can not read filehandle: %s", strerror(errno)); 522 525 523 526 return -1; … … 525 528 526 529 if (write(destFH, writeBuf, writeSize) != writeSize) { 527 fprintf(stderr, "can not write filehandles: %s", strerror(errno));530 nebSetErr(server, "can not write filehandles: %s", strerror(errno)); 528 531 529 532 return -1; … … 536 539 } 537 540 538 static int nebParseURI( const char *URI, char **filename)541 static int nebParseURI(nebServer *server, const char *URI, char **filename) 539 542 { 540 543 regex_t myregex; … … 553 556 if (status != 0) { 554 557 regerror(status, &myregex, errbuf, ERRBUF_SIZE); 555 fprintf(stderr, "regcomp error: %s\n", errbuf);558 nebSetErr(server, "regcomp error: %s", errbuf); 556 559 557 560 return 0; … … 561 564 if (status != 0) { 562 565 regerror(status, &myregex, errbuf, ERRBUF_SIZE); 563 fprintf(stderr, "regexec error: %s\n", errbuf);566 nebSetErr(server, "regexec error: %s", errbuf); 564 567 565 568 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.
