Changeset 4507 for trunk/Nebulous/nebclient
- Timestamp:
- Jul 7, 2005, 12:57:40 PM (21 years ago)
- Location:
- trunk/Nebulous/nebclient/src
- Files:
-
- 2 edited
-
nebclient.c (modified) (15 diffs)
-
nebclient.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/nebclient/src/nebclient.c
r4506 r4507 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.c,v 1.1 2 2005-07-07 22:47:40 jhoblitt Exp $6 * $Id: nebclient.c,v 1.13 2005-07-07 22:57:40 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(c har *source,char *dest);29 static off_t nebCopyFile(const char *source, const char *dest); 30 30 static off_t nebCopyFilehandle(int sourceFH, int destFH); 31 31 static int nebParseURI(const char *URI, char **filename); … … 56 56 } 57 57 58 int nebCreate(nebServer *server, c har *key, unsigned int class, char *volume,char *comment, char **URI)58 int nebCreate(nebServer *server, const char *key, unsigned int class, const char *volume, const char *comment, char **URI) 59 59 { 60 60 struct ns1__create_USCOREobjectResponse response; … … 62 62 int file; 63 63 64 if (soap_call_ns1__create_USCOREobject(server->soap, NULL, NULL, key, class, volume,comment, (char **)&response) == SOAP_OK) {64 if (soap_call_ns1__create_USCOREobject(server->soap, NULL, NULL, (char *)key, class, (char *)volume, (char *)comment, (char **)&response) == SOAP_OK) { 65 65 *URI = xmalloc(strlen((char *)response.result)); 66 66 strcpy(*URI, (char *)response.result); … … 170 170 } 171 171 172 int nebLock(nebServer *server, c har *key, rw flag)172 int nebLock(nebServer *server, const char *key, rw flag) 173 173 { 174 174 … … 176 176 } 177 177 178 int nebUnlock(nebServer *server, c har *key, rw flag)178 int nebUnlock(nebServer *server, const char *key, rw flag) 179 179 { 180 180 … … 182 182 } 183 183 184 int nebFindInstances(nebServer *server, c har *key,char *volume, char ***locations)184 int nebFindInstances(nebServer *server, const char *key, const char *volume, char ***locations) 185 185 { 186 186 struct ns1__find_USCOREinstancesResponse response; … … 191 191 192 192 // FIXME is this leaking memory when response goes out of scope? 193 if (soap_call_ns1__find_USCOREinstances(server->soap, NULL, NULL, key,volume, &response) == SOAP_OK) {193 if (soap_call_ns1__find_USCOREinstances(server->soap, NULL, NULL, (char *)key, (char *)volume, &response) == SOAP_OK) { 194 194 195 195 resultElements = response.result->__size; … … 213 213 } 214 214 215 int nebFind(nebServer *server, c har *key)215 int nebFind(nebServer *server, const char *key) 216 216 { 217 217 … … 283 283 } 284 284 285 int nebCopy(nebServer *server, c har *key, char *newKey)285 int nebCopy(nebServer *server, const char *key, const char *newKey) 286 286 { 287 287 … … 289 289 } 290 290 291 int nebMove(nebServer *server, c har *key, char *newKey)291 int nebMove(nebServer *server, const char *key, const char *newKey) 292 292 { 293 293 … … 324 324 } 325 325 326 int nebStat(nebServer *server, c har *key)326 int nebStat(nebServer *server, const char *key) 327 327 { 328 328 … … 333 333 { 334 334 return server->err_buf; 335 } 336 337 void nebFree(void *ptr) { 338 xfree(ptr); 335 339 } 336 340 … … 374 378 375 379 return nebSetErr(server, "%s - %s", *code, *string); 380 } 381 382 static off_t nebCopyFile(const char *source, const char *dest) 383 { 384 int sourceFH; 385 int destFH; 386 off_t bytesCopied; 387 388 sourceFH = open(source, O_RDONLY); 389 if (sourceFH == -1) { 390 fprintf(stderr, "can not open %s: %s\n", source, strerror(errno)); 391 392 return -1; 393 } 394 395 destFH = open(dest, O_WRONLY|O_CREAT|O_CREAT, 0600); 396 if (destFH == -1) { 397 fprintf(stderr, "can not open %s: %s\n", dest, strerror(errno)); 398 399 return -1; 400 } 401 402 bytesCopied = nebCopyFilehandle(sourceFH, destFH); 403 if (bytesCopied < 0) { 404 return -1; 405 } 406 407 if (close(sourceFH) == -1) { 408 fprintf(stderr, "can not close %s: %s", source, strerror(errno)); 409 410 return -1; 411 } 412 413 if (close(destFH) == -1) { 414 fprintf(stderr, "can not close %s: %s", dest, strerror(errno)); 415 416 return -1; 417 } 418 419 return bytesCopied; 420 } 421 422 static off_t nebCopyFilehandle(int sourceFH, int destFH) 423 { 424 off_t bytesTotal; 425 off_t bytesRemaining; 426 off_t writeSize; 427 char writeBuf[64 * 1024]; 428 struct stat sourceStat; 429 430 if(fstat(sourceFH, &sourceStat)) { 431 fprintf(stderr, "can not stat filehandles: %s\n", strerror(errno)); 432 433 return -1; 434 } 435 436 // the size of the file to copied 437 bytesTotal = sourceStat.st_size; 438 439 /* 440 * If the file size is <= the buffer size call write(2) with the 441 * file size. If the file size is > the buffer call write with the 442 * buffer size and loop until file size <= buffer size is true. 443 */ 444 445 bytesRemaining = bytesTotal; 446 447 while (bytesRemaining) { 448 if (bytesRemaining <= sizeof(writeBuf)) { 449 writeSize = bytesRemaining; 450 } else { 451 writeSize = sizeof(writeBuf); 452 } 453 454 if (read(sourceFH, writeBuf, writeSize) != writeSize) { 455 fprintf(stderr, "can not read filehandle: %s", strerror(errno)); 456 457 return -1; 458 } 459 460 if (write(destFH, writeBuf, writeSize) != writeSize) { 461 fprintf(stderr, "can not write filehandles: %s", strerror(errno)); 462 463 return -1; 464 } 465 466 bytesRemaining -= writeSize; 467 } 468 469 return bytesTotal; 376 470 } 377 471 … … 423 517 } 424 518 425 void nebFree(void *ptr) {426 xfree(ptr);427 }428 429 static off_t nebCopyFile(char *source, char *dest)430 {431 int sourceFH;432 int destFH;433 off_t bytesCopied;434 435 sourceFH = open(source, O_RDONLY);436 if (sourceFH == -1) {437 fprintf(stderr, "can not open %s: %s\n", source, strerror(errno));438 439 return -1;440 }441 442 destFH = open(dest, O_WRONLY|O_CREAT|O_CREAT, 0600);443 if (destFH == -1) {444 fprintf(stderr, "can not open %s: %s\n", dest, strerror(errno));445 446 return -1;447 }448 449 bytesCopied = nebCopyFilehandle(sourceFH, destFH);450 if (bytesCopied < 0) {451 return -1;452 }453 454 if (close(sourceFH) == -1) {455 fprintf(stderr, "can not close %s: %s", source, strerror(errno));456 457 return -1;458 }459 460 if (close(destFH) == -1) {461 fprintf(stderr, "can not close %s: %s", dest, strerror(errno));462 463 return -1;464 }465 466 return bytesCopied;467 }468 469 static off_t nebCopyFilehandle(int sourceFH, int destFH)470 {471 off_t bytesTotal;472 off_t bytesRemaining;473 off_t writeSize;474 char writeBuf[64 * 1024];475 struct stat sourceStat;476 477 if(fstat(sourceFH, &sourceStat)) {478 fprintf(stderr, "can not stat filehandles: %s\n", strerror(errno));479 480 return -1;481 }482 483 // the size of the file to copied484 bytesTotal = sourceStat.st_size;485 486 /*487 * If the file size is <= the buffer size call write(2) with the488 * file size. If the file size is > the buffer call write with the489 * buffer size and loop until file size <= buffer size is true.490 */491 492 bytesRemaining = bytesTotal;493 494 while (bytesRemaining) {495 if (bytesRemaining <= sizeof(writeBuf)) {496 writeSize = bytesRemaining;497 } else {498 writeSize = sizeof(writeBuf);499 }500 501 if (read(sourceFH, writeBuf, writeSize) != writeSize) {502 fprintf(stderr, "can not read filehandle: %s", strerror(errno));503 504 return -1;505 }506 507 if (write(destFH, writeBuf, writeSize) != writeSize) {508 fprintf(stderr, "can not write filehandles: %s", strerror(errno));509 510 return -1;511 }512 513 bytesRemaining -= writeSize;514 }515 516 return bytesTotal;517 }518 519 519 static bool nebNukeFile(const char *filename) 520 520 { -
trunk/Nebulous/nebclient/src/nebclient.h
r4506 r4507 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.h,v 1.1 4 2005-07-07 22:47:40 jhoblitt Exp $6 * $Id: nebclient.h,v 1.15 2005-07-07 22:57:40 jhoblitt Exp $ 7 7 */ 8 8 … … 14 14 15 15 typedef enum { NEB_READ, NEB_WRITE } rw; 16 16 17 typedef struct { 17 18 struct soap *soap; … … 20 21 }nebServer; 21 22 22 //void nebServerInit(nebServer *server);23 23 nebServer *nebServerAlloc(void); 24 24 25 25 void nebServerCleanup(nebServer *server); 26 26 27 int nebCreate(nebServer *server, c har *key, unsigned int class, char *volume,char *comment, char **URI);27 int nebCreate(nebServer *server, const char *key, unsigned int class, const char *volume, const char *comment, char **URI); 28 28 29 29 bool nebReplicate(nebServer *server, const char *key, const char *volume, char **URI); … … 31 31 bool nebCull(nebServer *server, const char *key); 32 32 33 int nebLock(nebServer *server, c har *key, rw flag);33 int nebLock(nebServer *server, const char *key, rw flag); 34 34 35 int nebUnlock(nebServer *server, c har *key, rw flag);35 int nebUnlock(nebServer *server, const char *key, rw flag); 36 36 37 int nebFindInstances(nebServer *server, c har *key,char *volume, char ***locations);37 int nebFindInstances(nebServer *server, const char *key, const char *volume, char ***locations); 38 38 39 int nebFind(nebServer *server, c har *key);39 int nebFind(nebServer *server, const char *key); 40 40 41 41 int nebOpen(nebServer *server, const char *key, rw flag); … … 43 43 bool nebDelete(nebServer *server, const char *key); 44 44 45 int nebCopy(nebServer *server, c har *key,char *newKey);45 int nebCopy(nebServer *server, const char *key, const char *newKey); 46 46 47 int nebMove(nebServer *server, c har *key,char *newKey);47 int nebMove(nebServer *server, const char *key, const char *newKey); 48 48 49 49 bool nebDeleteInstance(nebServer *server, const char *URI); 50 50 51 int nebStat(nebServer *server, c har *key);51 int nebStat(nebServer *server, const char *key); 52 52 53 53 char *nebErr(nebServer *server);
Note:
See TracChangeset
for help on using the changeset viewer.
