Changeset 21461
- Timestamp:
- Feb 12, 2009, 4:45:47 PM (17 years ago)
- Location:
- trunk/Nebulous/nebclient
- Files:
-
- 3 edited
-
src/nebclient.c (modified) (3 diffs)
-
src/nebclient.h (modified) (2 diffs)
-
tests/tests.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/nebclient/src/nebclient.c
r20988 r21461 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.c,v 1.5 6 2008-12-14 22:48:35 eugeneExp $6 * $Id: nebclient.c,v 1.57 2009-02-13 02:45:47 jhoblitt Exp $ 7 7 */ 8 8 … … 336 336 bool nebSetXattr(nebServer *server, const char *key, const char *name, const char *value, nebCR flag) 337 337 { 338 339 338 REQUIRE_SERVER; 340 339 … … 363 362 if (!response) { 364 363 nebSetErr(server, "can not set xattr"); 364 return false; 365 } 366 367 return true; 368 } 369 370 371 char *nebGetXattr(nebServer *server, const char *key, const char *name) 372 { 373 REQUIRE_SERVER; 374 375 if (!key) { 376 nebSetErr(server, "parameter 'key' may not be NULL"); 377 return false; 378 } 379 if (!name) { 380 nebSetErr(server, "parameter 'name' may not be NULL"); 381 return false; 382 } 383 384 struct ns1__getxattr_USCOREobjectResponse response; 385 if (soap_call_ns1__getxattr_USCOREobject(server->soap, server->endpoint, 386 NULL, (char *)key, (char *)name, (char **)&response) != SOAP_OK) { 387 nebSetServerErr(server); 388 return false; 389 } 390 391 if (!(char *)response.result) { 392 nebSetErr(server, "server returned no result"); 393 return NULL; 394 } 395 396 char *value = xmalloc(strlen((char *)response.result) + 1); 397 strcpy(value, (char *)response.result); 398 399 return value; 400 } 401 402 403 int nebListXattr(nebServer *server, const char *key, char ***xattrs) 404 { 405 REQUIRE_SERVER; 406 407 if (!key) { 408 nebSetErr(server, "parameter 'key' may not be NULL"); 409 return false; 410 } 411 412 struct ns1__listxattr_USCOREobjectResponse response; 413 if (soap_call_ns1__listxattr_USCOREobject(server->soap, server->endpoint, 414 NULL, (char *)key, &response) != SOAP_OK) { 415 nebSetServerErr(server); 416 return false; 417 } 418 419 int resultElements = response.result->__size; 420 421 if (xattrs) { 422 char **resultArray = response.result->__ptr; 423 *xattrs = xmalloc(resultElements * sizeof(char *)); 424 if (resultElements) { 425 for (int i = 0; i < resultElements; i++) { 426 *xattrs[i] = xmalloc(strlen(resultArray[i]) + 1); 427 strcpy(*xattrs[i], resultArray[i]); 428 } 429 430 } 431 } 432 433 return resultElements; 434 } 435 436 437 bool nebRemoveXattr(nebServer *server, const char *key, const char *name) 438 { 439 REQUIRE_SERVER; 440 441 if (!key) { 442 nebSetErr(server, "parameter 'key' may not be NULL"); 443 return false; 444 } 445 if (!name) { 446 nebSetErr(server, "parameter 'name' may not be NULL"); 447 return false; 448 } 449 450 int response; 451 if (soap_call_ns1__removexattr_USCOREobject(server->soap, server->endpoint, 452 NULL, (char *)key, (char *)name, &response) != SOAP_OK) { 453 nebSetServerErr(server); 454 return false; 455 } 456 457 if (!response) { 458 nebSetErr(server, "can not remove xattr"); 365 459 return false; 366 460 } -
trunk/Nebulous/nebclient/src/nebclient.h
r20988 r21461 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.h,v 1.3 8 2008-12-14 22:48:35 eugeneExp $6 * $Id: nebclient.h,v 1.39 2009-02-13 02:45:47 jhoblitt Exp $ 7 7 */ 8 8 … … 155 155 ); 156 156 157 /** Get an Xattr on a storage object 158 * 159 * @return true on success 160 */ 161 char *nebGetXattr( 162 nebServer *server, ///< nebServer object 163 const char *key, ///< storage object key (name) 164 const char *name ///< xattr name 165 ); 166 167 /** Get an Xattr on a storage object 168 * 169 * @return true on success 170 */ 171 int nebListXattr( 172 nebServer *server, ///< nebServer object 173 const char *key, ///< storage object key (name) 174 char ***xattrs ///< array of xattr names 175 ); 176 177 /** Remove an Xattr from a storage object 178 * 179 * @return true on success 180 */ 181 bool nebRemoveXattr( 182 nebServer *server, ///< nebServer object 183 const char *key, ///< storage object key (name) 184 const char *name ///< xattr name 185 ); 186 157 187 /** Lists all instances of a storage object 158 188 * -
trunk/Nebulous/nebclient/tests/tests.c
r20209 r21461 2 2 #include <stdlib.h> 3 3 #include <unistd.h> 4 #include <string.h> 4 5 #include <stdbool.h> 5 6 … … 19 20 char *key = "foobarbaz"; 20 21 21 plan_tests(2 4);22 plan_tests(28); 22 23 23 24 if (getenv("NEB_SERVER")) { … … 96 97 neb_ok(server, nebSetXattr(server, key, "user.copies", "2", NEB_CREATE), "set user.copies xattr"); 97 98 99 char *copies = nebGetXattr(server, key, "user.copies"); 100 neb_ok(server, strcmp(copies, "2") == 0, "get user.copies xattr"); 101 char **xattrs = NULL; 102 int n_xattrs = nebListXattr(server, key, &xattrs); 103 printf("# %s\n\n", xattrs[0]); 104 neb_ok(server, n_xattrs == 1, "count of xattrs"); 105 neb_ok(server, strcmp(xattrs[0], "user.copies") == 0, "user.copies xattr exists"); 106 neb_ok(server, nebRemoveXattr(server, key, "user.copies"), "remove user.copies xattr"); 107 98 108 { 99 109 nebObjectInstances *locations = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.
