| 2778 | } |
| 2779 | |
| 2780 | static int fs_cmd_write(FSDevice *fs, FSFile *f, uint64_t offset, |
| 2781 | const uint8_t *buf, int buf_len) |
| 2782 | { |
| 2783 | char *buf1; |
| 2784 | const char *p; |
| 2785 | char cmd[64]; |
| 2786 | int err; |
| 2787 | |
| 2788 | /* transform into a string */ |
| 2789 | buf1 = malloc(buf_len + 1); |
| 2790 | memcpy(buf1, buf, buf_len); |
| 2791 | buf1[buf_len] = '\0'; |
| 2792 | |
| 2793 | err = 0; |
| 2794 | p = buf1; |
| 2795 | if (parse_fname(cmd, sizeof(cmd), &p) < 0) |
| 2796 | goto fail; |
| 2797 | if (!strcmp(cmd, "xhr")) { |
| 2798 | err = fs_cmd_xhr(fs, f, p, f->uid, 0); |
| 2799 | } else if (!strcmp(cmd, "set_base_url")) { |
| 2800 | err = fs_cmd_set_base_url(fs, p); |
| 2801 | } else if (!strcmp(cmd, "reset_base_url")) { |
| 2802 | err = fs_cmd_reset_base_url(fs, p); |
| 2803 | } else if (!strcmp(cmd, "set_url")) { |
| 2804 | err = fs_cmd_set_url(fs, p); |
| 2805 | } else if (!strcmp(cmd, "export_file")) { |
| 2806 | err = fs_cmd_export_file(fs, p); |
| 2807 | } else if (!strcmp(cmd, "pbkdf2")) { |
| 2808 | err = fs_cmd_pbkdf2(fs, f, p); |
| 2809 | } else if (!strcmp(cmd, "set_import_dir")) { |
| 2810 | err = fs_cmd_set_import_dir(fs, f, p); |
| 2811 | } else { |
| 2812 | printf("unknown command: '%s'\n", cmd); |
| 2813 | fail: |
| 2814 | err = -P9_EIO; |
| 2815 | } |
| 2816 | free(buf1); |
| 2817 | if (err == 0) |
| 2818 | return buf_len; |
| 2819 | else |
| 2820 | return err; |
| 2821 | } |
| 2822 | |
| 2823 | static int fs_cmd_read(FSDevice *fs, FSFile *f, uint64_t offset, |
| 2824 | uint8_t *buf, int buf_len) |
no test coverage detected