コード例 #1
0
ファイル: cloudfuse.c プロジェクト: gokuale/hubicfuse
int parse_option(void *data, const char *arg, int key, struct fuse_args *outargs)
{
    if (sscanf(arg, " cache_timeout = %[^\r\n ]", options.cache_timeout) ||
            sscanf(arg, " verify_ssl = %[^\r\n ]", options.verify_ssl) ||
            sscanf(arg, " segment_above = %[^\r\n ]", options.segment_above) ||
            sscanf(arg, " segment_size = %[^\r\n ]", options.segment_size) ||
            sscanf(arg, " storage_url = %[^\r\n ]", options.storage_url) ||
            sscanf(arg, " container = %[^\r\n ]", options.container) ||
            sscanf(arg, " temp_dir = %[^\r\n ]", options.temp_dir) ||
            sscanf(arg, " client_id = %[^\r\n ]", options.client_id) ||
            sscanf(arg, " client_secret = %[^\r\n ]", options.client_secret) ||
            sscanf(arg, " refresh_token = %[^\r\n ]", options.refresh_token))
        return 0;
    if (!strcmp(arg, "-f") || !strcmp(arg, "-d") || !strcmp(arg, "debug"))
        cloudfs_debug(1);
    return 1;
}
コード例 #2
0
ファイル: cloudfuse.c プロジェクト: fleischkatapult/hubicfuse
int parse_option(void* data, const char* arg, int key,
                 struct fuse_args* outargs)
{
  if (sscanf(arg, " cache_timeout = %[^\r\n ]", options.cache_timeout) ||
      sscanf(arg, " verify_ssl = %[^\r\n ]", options.verify_ssl) ||
      sscanf(arg, " segment_above = %[^\r\n ]", options.segment_above) ||
      sscanf(arg, " segment_size = %[^\r\n ]", options.segment_size) ||
      sscanf(arg, " storage_url = %[^\r\n ]", options.storage_url) ||
      sscanf(arg, " container = %[^\r\n ]", options.container) ||
      sscanf(arg, " temp_dir = %[^\r\n ]", options.temp_dir) ||
      sscanf(arg, " client_id = %[^\r\n ]", options.client_id) ||
      sscanf(arg, " client_secret = %[^\r\n ]", options.client_secret) ||
      sscanf(arg, " refresh_token = %[^\r\n ]", options.refresh_token) ||

      sscanf(arg, " get_extended_metadata = %[^\r\n ]",
             extra_options.get_extended_metadata) ||
      sscanf(arg, " curl_verbose = %[^\r\n ]", extra_options.curl_verbose) ||
      sscanf(arg, " cache_statfs_timeout = %[^\r\n ]",
             extra_options.cache_statfs_timeout) ||
      sscanf(arg, " debug_level = %[^\r\n ]", extra_options.debug_level) ||
      sscanf(arg, " curl_progress_state = %[^\r\n ]",
             extra_options.curl_progress_state) ||
      sscanf(arg, " enable_chmod = %[^\r\n ]", extra_options.enable_chmod) ||
      sscanf(arg, " enable_chown = %[^\r\n ]", extra_options.enable_chown)
     )
    return 0;

  if (!strncmp(arg, "settings_filename=", 18))
  {
    arg += 18;
    strncpy(extra_options.settings_filename, arg, MAX_PATH_SIZE);
    return 0;
  }

  // Detect help for help enrichment
  if (!strcmp(arg, "-h") || !strcmp(arg, "--help"))
    strcpy(extra_options.help, "true");

  if (!strcmp(arg, "-f") || !strcmp(arg, "-d") || !strcmp(arg, "debug"))
    cloudfs_debug(1);

  return 1;
}
コード例 #3
0
ファイル: cloudfuse.c プロジェクト: cwedgwood/cloudfuse
int main(int argc, char **argv)
{
  char line[1024];
  char username[sizeof(line)] = "", api_key[sizeof(line)] = "",
       settings_filename[sizeof(line)] = "", use_snet[sizeof(line)] = "",
       authurl[MAX_URL_SIZE] = "https://auth.api.rackspacecloud.com/v1.0";
  FILE *settings;
  int foreground = 0;
  struct fuse_args args = FUSE_ARGS_INIT(argc, argv);

  char *home = get_home_dir();
  snprintf(settings_filename, sizeof(settings_filename), "%s%s.cloudfuse",
           home,  home[strlen(home)] == '/' ? "" : "/");
  if ((settings = fopen(settings_filename, "r")))
  {
    while (fgets(line, sizeof(line), settings))
    {
      sscanf(line, " username = %[^\r\n ]", username);
      sscanf(line, " api_key = %[^\r\n ]", api_key);
      sscanf(line, " cache_timeout = %d", &cache_timeout);
      sscanf(line, " authurl = %[^\r\n ]", authurl);
      sscanf(line, " use_snet = %[^\r\n ]", use_snet);
    }
    fclose(settings);
  }
  if (!*username || !*api_key)
  {
    fprintf(stderr, "Unable to read %s\n", settings_filename);
    fprintf(stderr, "It should contain:\n\n");
    fprintf(stderr, "  username=[Mosso username]\n");
    fprintf(stderr, "  api_key=[Mosso api key]\n\n");
    fprintf(stderr, "These entries are optional:\n\n");
    fprintf(stderr, "  cache_timeout=[seconds for directory caching]\n");
    fprintf(stderr, "  use_snet=[True to connect to snet]\n");
    fprintf(stderr, "  authurl=[used for testing]\n");
    return 1;
  }

  fuse_parse_cmdline(&args, NULL, NULL, &foreground);
  cloudfs_debug(foreground);

  if (!cloudfs_connect(username, api_key, authurl,
        !strncasecmp(use_snet, "true", sizeof(use_snet))))
  {
    fprintf(stderr, "Unable to authenticate.\n");
    return 1;
  }

  static struct fuse_operations cfs_oper = {
    .readdir = cfs_readdir,
    .mkdir = cfs_mkdir,
    .read = cfs_read,
    .create = cfs_create,
    .open = cfs_open,
    .fgetattr = cfs_fgetattr,
    .getattr = cfs_getattr,
    .flush = cfs_flush,
    .release = cfs_release,
    .rmdir = cfs_rmdir,
    .ftruncate = cfs_ftruncate,
    .truncate = cfs_truncate,
    .write = cfs_write,
    .unlink = cfs_unlink,
    .fsync = cfs_fsync,
    .statfs = cfs_statfs,
    .chmod = cfs_chmod,
    .chown = cfs_chown,
  };

  pthread_mutex_init(&dmut, NULL);
  signal(SIGPIPE, SIG_IGN);
  return fuse_main(argc, argv, &cfs_oper, NULL);
}