Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bdsh/cmds/modules/cmp/cmp.c

    rf77c1c9 r582a0b8  
    7272static int cmp_files(const char *fn0, const char *fn1)
    7373{
    74         int rc = EOK;
     74        int rc = 0;
    7575        const char *fn[2] = {fn0, fn1};
    7676        int fd[2] = {-1, -1};
    7777        char buffer[2][CMP_BUFLEN];
    78         size_t offset[2];
     78        ssize_t offset[2];
    7979        aoff64_t pos[2] = {};
    8080
    8181        for (int i = 0; i < 2; i++) {
    82                 rc = vfs_lookup_open(fn[i], WALK_REGULAR, MODE_READ, &(fd[i]));
    83                 if (rc != EOK) {
     82                fd[i] = vfs_lookup_open(fn[i], WALK_REGULAR, MODE_READ);
     83                if (fd[i] < 0) {
     84                        rc = fd[i];
    8485                        printf("Unable to open %s\n", fn[i]);
    8586                        goto end;
     
    8990        do {
    9091                for (int i = 0; i < 2; i++) {
    91                         rc = vfs_read(fd[i], &pos[i], buffer[i], CMP_BUFLEN,
    92                             &offset[i]);
    93                         if (rc != EOK) {
    94                                 printf("Error reading from %s\n",
    95                                     fn[i]);
    96                                 goto end;
    97                         }
     92                        offset[i] = 0;
     93                        ssize_t size;
     94                        do {
     95                                size = vfs_read(fd[i], &pos[i],
     96                                    buffer[i] + offset[i],
     97                                    CMP_BUFLEN - offset[i]);
     98                                if (size < 0) {
     99                                        rc = size;
     100                                        printf("Error reading from %s\n",
     101                                            fn[i]);
     102                                        goto end;
     103                                }
     104                                offset[i] += size;
     105                        } while (size && offset[i] < CMP_BUFLEN);
    98106                }
    99107
    100108                if (offset[0] != offset[1] ||
    101109                    memcmp(buffer[0], buffer[1], offset[0]) != 0) {
    102                         printf("Return 1\n");
    103110                        rc = 1;
    104111                        goto end;
     
    142149
    143150        rc = cmp_files(argv[optind], argv[optind + 1]);
    144         if (rc != EOK)
     151        if (rc)
    145152                return CMD_FAILURE;
    146153        else
Note: See TracChangeset for help on using the changeset viewer.