Changeset ee83e9c in mainline


Ignore:
Timestamp:
2024-09-05T22:44:57Z (16 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
b0f1366
Parents:
095a989
Message:

hrctl: use sizeof(devname) instead of a constant

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/hrctl/hrctl.c

    r095a989 ree83e9c  
    6868    "\n"
    6969    "Example usage:\n"
    70     "  hrctl --create /hr0 -0 -n 2 devices/\\hw\\0 devices/\\hw\\1\n"
     70    "  hrctl --create hr0 -0 -n 2 devices/\\hw\\0 devices/\\hw\\1\n"
    7171    "    - creates new mirroring RAID device named /hr0 consisting\n"
    7272    "      of 2 drives\n"
    73     "  hrctl --assemble /hr0 -n 2 devices/\\hw\\0 devices/\\hw\\1\n"
     73    "  hrctl --assemble hr0 -n 2 devices/\\hw\\0 devices/\\hw\\1\n"
    7474    "    - assembles RAID device named /hr0 consisting of 2 drives,\n"
    75     "      that were previously in an array\n";
     75    "      that were previously in an array\n"
     76    "Limitations:\n"
     77    "  - device name must be less than 32 characters in size\n";
    7678
    7779static struct option const long_options[] = {
     
    9799
    98100        for (i = 0; i < cfg->dev_no; i++) {
    99                 rc = loc_service_get_id(argv[optind++], &cfg->devs[i], 0);
     101                rc = loc_service_get_id(argv[optind], &cfg->devs[i], 0);
    100102                if (rc != EOK) {
    101                         printf("hrctl: error resolving device \"%s\"\n", argv[i]);
     103                        printf("hrctl: error resolving device \"%s\"\n", argv[optind]);
    102104                        return EINVAL;
    103105                }
     106
     107                optind++;
    104108        }
    105109
     
    147151                goto error;
    148152        }
    149         str_cpy(cfg->devname, 32, devname);
     153        str_cpy(cfg->devname, sizeof(cfg->devname), devname);
    150154
    151155        level_str = sif_node_get_attr(narray, "level");
     
    236240                        return 0;
    237241                case 'a':
    238                         if (str_size(optarg) > 31) {
    239                                 printf("hrctl: device name longer than 31 bytes\n");
     242                        if (str_size(optarg) > sizeof(cfg->devname) - 1) {
     243                                printf("hrctl: device name too long\n");
    240244                                return 1;
    241245                        }
    242                         str_cpy(cfg->devname, 32, optarg);
     246                        str_cpy(cfg->devname, sizeof(cfg->devname), optarg);
    243247                        assemble = true;
    244248                        break;
     
    253257                        goto skip;
    254258                case 'c':
    255                         if (str_size(optarg) > 31) {
    256                                 printf("hrctl: device name longer than 31 bytes\n");
     259                        if (str_size(optarg) > sizeof(cfg->devname) - 1) {
     260                                printf("hrctl: device name too long\n");
    257261                                return 1;
    258262                        }
    259                         str_cpy(cfg->devname, 32, optarg);
     263                        str_cpy(cfg->devname, sizeof(cfg->devname), optarg);
    260264                        create = true;
    261265                        break;
Note: See TracChangeset for help on using the changeset viewer.