Exemplo n.º 1
0
int
s3FileStat (rsComm_t *rsComm, char *filename, struct stat *statbuf)
{
    int status;
    char key[MAX_NAME_LEN], myBucket[MAX_NAME_LEN];
    s3Stat_t s3Stat;
    int len;

    len = strlen (filename);

    bzero (statbuf, sizeof (struct stat));

    if (filename[len - 1] == '/') {
	/* a directory */
	statbuf->st_mode = S_IFDIR;
	return 0;
    }
	
    if ((status = parseS3Path (filename, myBucket, key)) < 0) return status;
    status = list_bucket (myBucket, key, NULL, NULL, 1, 1, &s3Stat);

    if (status == 0) {
	statbuf->st_mode = S_IFREG;
	statbuf->st_nlink = 1;
	statbuf->st_uid = getuid ();
	statbuf->st_gid = getgid ();
        statbuf->st_atime = statbuf->st_mtime = statbuf->st_ctime = 
	s3Stat.lastModified;
	statbuf->st_size = s3Stat.size;
    }

    return (status);
}
Exemplo n.º 2
0
void
cb_get_metadata(void *handle)
{
  dpl_async_task_t *atask = (dpl_async_task_t *) handle;
  dpl_dict_var_t *metadatum = NULL;

  if (DPL_SUCCESS != atask->ret)
    {
      fprintf(stderr, "error getting metadata: %s (%d)\n", dpl_status_str(atask->ret), atask->ret);
      exit(1);
    }

  fprintf(stderr, "checking metadata\n");

  metadatum = dpl_dict_get(atask->u.head.metadata, "foo");
  if (NULL == metadatum)
    {
      fprintf(stderr, "missing metadatum\n");
      exit(1);
    }

  assert(metadatum->val->type == DPL_VALUE_STRING);
  if (strcmp(dpl_sbuf_get_str(metadatum->val->string), "bar2"))
    {
      fprintf(stderr, "bad value in metadatum\n");
      exit(1);
    }

  metadatum = dpl_dict_get(atask->u.head.metadata, "foo2");
  if (NULL == metadatum)
    {
      fprintf(stderr, "missing metadatum\n");
      exit(1);
    }

  assert(metadatum->val->type == DPL_VALUE_STRING);
  if (strcmp(dpl_sbuf_get_str(metadatum->val->string), "qux"))
    {
      fprintf(stderr, "bad value in metadatum\n");
      exit(1);
    }

  dpl_async_task_free(atask);

  list_bucket();
}