# HG changeset patch # User Michael Spacefalcon # Date 1393722570 0 # Node ID 91570f916dd3681d46126af8470d36e11e31b34a # Parent 100192a924726e05c94d8a7caa98a5d25ef87492 fc-fsio: upload-file and upload-subtree implemented diff -r 100192a92472 -r 91570f916dd3 rvinterf/etmsync/fscmdtab.c --- a/rvinterf/etmsync/fscmdtab.c Sun Mar 02 00:39:56 2014 +0000 +++ b/rvinterf/etmsync/fscmdtab.c Sun Mar 02 01:09:30 2014 +0000 @@ -18,6 +18,8 @@ extern int cmd_mkdir(); extern int cmd_stat(); extern int cmd_uploadfs(); +extern int cmd_upload_file(); +extern int cmd_upload_subtree(); struct cmdtab cmdtab[] = { {"cpout", 2, 2, cmd_cpout}, @@ -33,6 +35,8 @@ {"ls", 1, 1, cmd_ls}, {"mkdir", 1, 1, cmd_mkdir}, {"stat", 1, 1, cmd_stat}, + {"upload-file", 2, 2, cmd_upload_file}, {"upload-fs", 1, 1, cmd_uploadfs}, + {"upload-subtree", 2, 2, cmd_upload_subtree}, {0, 0, 0, 0} }; diff -r 100192a92472 -r 91570f916dd3 rvinterf/etmsync/fsupload.c --- a/rvinterf/etmsync/fsupload.c Sun Mar 02 00:39:56 2014 +0000 +++ b/rvinterf/etmsync/fsupload.c Sun Mar 02 01:09:30 2014 +0000 @@ -110,3 +110,37 @@ { return uploadfs_level(argv[1], 0, ""); } + +cmd_upload_file(argc, argv) + char **argv; +{ + if (strlen(argv[2]) >= TMFFS_STRING_SIZE) { + fprintf(stderr, + "error: pathname arg exceeds string length limit\n"); + return(ERROR_USAGE); + } + return fwrite_from_file(argv[2], argv[1]); +} + +cmd_upload_subtree(argc, argv) + char **argv; +{ + int rc, depth; + + depth = validate_ffs_pathname(argv[2]); + if (depth < 0) + return(ERROR_USAGE); /* error msg already printed */ + if (depth == 0) { + fprintf(stderr, "please use upload-fs command instead\n"); + return(ERROR_USAGE); + } + if (depth >= MAX_NAME_DEPTH) { + fprintf(stderr, "cannot upload into max-depth directory\n"); + return(ERROR_USAGE); + } + printf("mkdir %s\n", argv[2]); + rc = do_mkdir_existok(argv[2]); + if (rc) + return(rc); + return uploadfs_level(argv[1], depth, argv[2]); +}