Ticket #149: 03_fix_whitespace_via_fish.patch

File 03_fix_whitespace_via_fish.patch, 6.3 KB (added by Patrick Winnertz, 11 years ago)

Added by email2trac

  • vfs/fish.c

    diff --git a/vfs/fish.c b/vfs/fish.c
    index 2a2deb6..d03917e 100644
    a b fish_dir_load(struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path) 
    366366    dir->timestamp.tv_sec += fish_directory_timeout; 
    367367    quoted_path = name_quote (remote_path, 0); 
    368368    fish_command (me, super, NONE, 
    369             "#LIST /%s\n" 
    370             "if ls -1 /%s >/dev/null 2>&1 ;\n" 
     369            "#LIST \"/%s\"\n" 
     370            "if ls -1 \"/%s\" >/dev/null 2>&1 ;\n" 
    371371            "then\n" 
    372             "ls -lLan /%s 2>/dev/null | grep '^[^cbt]' | (\n" 
     372            "ls -lQLan \"/%s\" 2>/dev/null | grep '^[^cbt]' | (\n" 
    373373              "while read p l u g s m d y n; do\n" 
    374                 "echo \"P$p $u.$g\nS$s\nd$m $d $y\n:$n\n\"\n" 
     374                "echo \"P$p $u.$g\nS$s\nd$m $d $y\n:$n\n\"|sed 's#\\\"##g'\n" 
    375375              "done\n" 
    376376            ")\n" 
    377             "ls -lan /%s 2>/dev/null | grep '^[cb]' | (\n" 
     377            "ls -lQan \"/%s\" 2>/dev/null | grep '^[cb]' | (\n" 
    378378              "while read p l u g a i m d y n; do\n" 
    379379                "echo \"P$p $u.$g\nE$a$i\nd$m $d $y\n:$n\n\"\n" 
    380380              "done\n" 
    fish_file_store(struct vfs_class *me, struct vfs_s_fh *fh, char *name, char *loc 
    527527     *  instead of stderr. It makes impossible the use of "head || dd" 
    528528     *  algorithm for file appending case, therefore just "dd" is used for it. 
    529529     */ 
    530  
     530        name = unescape_string(name); 
    531531    print_vfs_message(_("fish: store %s: sending command..."), name ); 
    532     quoted_name = name_quote (name, 0); 
     532    quoted_name = unescape_string (name_quote (name, 0)); 
    533533 
    534534    /* FIXME: File size is limited to ULONG_MAX */ 
    535535    if (!fh->u.fish.append) 
    536536        n = fish_command (me, super, WAIT_REPLY, 
    537                  "#STOR %lu /%s\n" 
     537                 "#STOR %lu \"/%s\"\n" 
    538538                 "echo '### 001'\n" 
    539                  "file=/%s\n" 
     539                 "file=\"/%s\"\n" 
    540540                 "res=`exec 3>&1\n" 
    541541                 "(\n" 
    542542                   "head -c %lu -q - || echo DD >&3\n" 
    fish_file_store(struct vfs_class *me, struct vfs_s_fh *fh, char *name, char *loc 
    558558                 (unsigned long) s.st_size); 
    559559    else 
    560560        n = fish_command (me, super, WAIT_REPLY, 
    561                  "#STOR %lu /%s\n" 
     561                 "#STOR %lu \"/%s\"\n" 
    562562                 "echo '### 001'\n" 
    563563                 "{\n" 
    564                         "file=/%s\n" 
     564                        "file=\"/%s\"\n" 
    565565                        "rest=%lu\n" 
    566566                        "while [ $rest -gt 0 ]\n" 
    567567                        "do\n" 
    fish_linear_start (struct vfs_class *me, struct vfs_s_fh *fh, off_t offset) 
    627627        return 0; 
    628628    quoted_name = name_quote (name, 0); 
    629629    g_free (name); 
    630     name = quoted_name; 
     630    name = unescape_string(quoted_name); 
    631631    fh->u.fish.append = 0; 
    632632 
    633633    /* 
    fish_linear_start (struct vfs_class *me, struct vfs_s_fh *fh, off_t offset) 
    637637     * standard output (i.e. over the network). 
    638638     */ 
    639639    offset = fish_command (me, FH_SUPER, WANT_STRING, 
    640                 "#RETR /%s\n" 
    641                 "if dd if=/%s of=/dev/null bs=1 count=1 2>/dev/null ;\n" 
     640                "#RETR \"/%s\"\n" 
     641                "if dd if=\"/%s\" of=/dev/null bs=1 count=1 2>/dev/null ;\n" 
    642642                "then\n" 
    643                 "ls -ln /%s 2>/dev/null | (\n" 
     643                "ls -ln \"/%s\" 2>/dev/null | (\n" 
    644644                  "read p l u g s r\n" 
    645645                  "echo \"$s\"\n" 
    646646                ")\n" 
    647647                "echo '### 100'\n" 
    648                 "cat /%s\n" 
     648                "cat \"//%s\"\n" 
    649649                "echo '### 200'\n" 
    650650                "else\n" 
    651651                "echo '### 500'\n"  
    fish_send_command(struct vfs_class *me, struct vfs_s_super *super, const char *c 
    767767        return -1; \ 
    768768    } \ 
    769769    rpath = name_quote (crpath, 0); \ 
     770    rpath = unescape_string(rpath); \ 
    770771    g_free (mpath); 
    771772 
    772773#define POSTFIX(flags) \ 
    static int 
    777778fish_chmod (struct vfs_class *me, const char *path, int mode) 
    778779{ 
    779780    PREFIX 
    780     g_snprintf(buf, sizeof(buf), "#CHMOD %4.4o /%s\n" 
     781    g_snprintf(buf, sizeof(buf), "#CHMOD %4.4o \"/%s\"\n" 
    781782                                 "chmod %4.4o \"/%s\" 2>/dev/null\n" 
    782783                                 "echo '### 000'\n",  
    783784            mode & 07777, rpath, 
    static int fish_##name (struct vfs_class *me, const char *path1, const char *pat 
    811812    return fish_send_command(me, super2, buf, OPT_FLUSH); \ 
    812813} 
    813814 
    814 FISH_OP(rename, "#RENAME /%s /%s\n" 
    815                 "mv /%s /%s 2>/dev/null\n" 
     815FISH_OP(rename, "#RENAME \"/%s\" \"/%s\"\n" 
     816                "mv \"/%s\" \"/%s\" 2>/dev/null\n" 
    816817                "echo '### 000'" ) 
    817 FISH_OP(link,   "#LINK /%s /%s\n" 
    818                 "ln /%s /%s 2>/dev/null\n" 
     818FISH_OP(link,   "#LINK \"/%s\" \"/%s\"\n" 
     819                "ln \"/%s\" \"/%s\" 2>/dev/null\n" 
    819820                "echo '### 000'" ) 
    820821 
    821822static int fish_symlink (struct vfs_class *me, const char *setto, const char *path) 
    static int fish_symlink (struct vfs_class *me, const char *setto, const char *pa 
    824825    PREFIX 
    825826    qsetto = name_quote (setto, 0); 
    826827    g_snprintf(buf, sizeof(buf), 
    827             "#SYMLINK %s /%s\n" 
    828             "ln -s %s /%s 2>/dev/null\n" 
     828            "#SYMLINK \"%s\" \"/%s\"\n" 
     829            "ln -s \"%s\" \"/%s\" 2>/dev/null\n" 
    829830            "echo '### 000'\n", 
    830831            qsetto, rpath, qsetto, rpath); 
    831832    g_free (qsetto); 
    fish_chown (struct vfs_class *me, const char *path, int owner, int group) 
    850851    { 
    851852        PREFIX 
    852853        g_snprintf (buf, sizeof(buf), 
    853             "#CHOWN /%s /%s\n" 
    854             "chown %s /%s 2>/dev/null\n" 
     854            "#CHOWN /%s \"/%s\"\n" 
     855            "chown %s \"/%s\" 2>/dev/null\n" 
    855856            "echo '### 000'\n",  
    856857            sowner, rpath, 
    857858            sowner, rpath); 
    858859        fish_send_command (me, super, buf, OPT_FLUSH);  
    859860        /* FIXME: what should we report if chgrp succeeds but chown fails? */ 
    860861        g_snprintf (buf, sizeof(buf), 
    861             "#CHGRP /%s /%s\n" 
    862             "chgrp %s /%s 2>/dev/null\n" 
     862            "#CHGRP /%s \"/%s\"\n" 
     863            "chgrp %s \"/%s\" 2>/dev/null\n" 
    863864            "echo '### 000'\n",  
    864865            sgroup, rpath, 
    865866            sgroup, rpath); 
    static int fish_unlink (struct vfs_class *me, const char *path) 
    872873{ 
    873874    PREFIX 
    874875    g_snprintf(buf, sizeof(buf), 
    875             "#DELE /%s\n" 
    876             "rm -f /%s 2>/dev/null\n" 
     876            "#DELE \"/%s\"\n" 
     877            "rm -f \"/%s\" 2>/dev/null\n" 
    877878            "echo '### 000'\n", 
    878879            rpath, rpath); 
    879880    POSTFIX(OPT_FLUSH); 
    static int fish_mkdir (struct vfs_class *me, const char *path, mode_t mode) 
    884885    PREFIX 
    885886 
    886887    (void) mode; 
    887  
    888888    g_snprintf(buf, sizeof(buf), 
    889             "#MKD /%s\n" 
    890             "mkdir /%s 2>/dev/null\n" 
     889            "#MKD \"/%s\"\n" 
     890            "mkdir \"/%s\" 2>/dev/null\n" 
    891891            "echo '### 000'\n", 
    892892            rpath, rpath); 
    893893    POSTFIX(OPT_FLUSH); 
    static int fish_rmdir (struct vfs_class *me, const char *path) 
    897897{ 
    898898    PREFIX 
    899899    g_snprintf(buf, sizeof(buf), 
    900             "#RMD /%s\n" 
    901             "rmdir /%s 2>/dev/null\n" 
     900            "#RMD \"/%s\"\n" 
     901            "rmdir \"/%s\" 2>/dev/null\n" 
    902902            "echo '### 000'\n", 
    903903            rpath, rpath); 
    904904    POSTFIX(OPT_FLUSH);