Ignore:
File:
1 edited

Legend:

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

    rf9d8c3a r36ab7c7  
    5454static struct option const long_options[] = {
    5555        {"size", required_argument, 0, 's'},
    56         {"sparse", no_argument, 0, 'p'},
    5756        {"help", no_argument, 0, 'h'},
    5857        {0, 0, 0, 0}
     
    7069                "  -h, --help       A short option summary\n"
    7170                "  -s, --size sz    Size of the file\n"
    72                 "  -p, --sparse     Create a sparse file\n"
    7371                "\n"
    7472                "Size is a number followed by 'k', 'm' or 'g' for kB, MB, GB.\n"
     
    117115        ssize_t file_size;
    118116        ssize_t total_written;
    119         ssize_t to_write, rc, rc2 = 0;
     117        ssize_t to_write, rc;
    120118        char *file_name;
    121119        void *buffer;
    122         bool create_sparse = false;
    123120
    124121        file_size = 0;
     
    127124
    128125        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    129                 c = getopt_long(argc, argv, "ps:h", long_options, &opt_ind);
     126                c = getopt_long(argc, argv, "s:h", long_options, &opt_ind);
    130127                switch (c) {
    131128                case 'h':
    132129                        help_cmd_mkfile(HELP_LONG);
    133130                        return CMD_SUCCESS;
    134                 case 'p':
    135                         create_sparse = true;
    136                         break;
    137131                case 's':
    138132                        file_size = read_size(optarg);
     
    162156        }
    163157
    164         if (create_sparse && file_size > 0) {
    165                 const char byte = 0x00;
    166 
    167                 if ((rc2 = lseek(fd, file_size - 1, SEEK_SET)) < 0)
    168                         goto exit;
    169 
    170                 rc2 = write(fd, &byte, sizeof(char));
    171                 goto exit;
    172         }
    173 
    174158        buffer = calloc(BUFFER_SIZE, 1);
    175159        if (buffer == NULL) {
     
    190174        }
    191175
    192         free(buffer);
    193 exit:
    194176        rc = close(fd);
    195 
    196         if (rc != 0 || rc2 < 0) {
     177        if (rc != 0) {
    197178                printf("%s: Error writing file (%zd).\n", cmdname, rc);
    198179                return CMD_FAILURE;
    199180        }
    200181
     182        free(buffer);
     183
    201184        return CMD_SUCCESS;
    202185}
Note: See TracChangeset for help on using the changeset viewer.