Viewing: chown.c
📄 chown.c (Read Only) ⬅ To go back
/* AdrOS chown utility */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char** argv) {
    if (argc < 3) {
        fprintf(stderr, "Usage: chown <owner[:group]> <file>...\n");
        return 1;
    }

    /* Parse owner:group */
    int owner = -1, group = -1;
    char* colon = strchr(argv[1], ':');
    if (colon) {
        *colon = '\0';
        if (argv[1][0]) owner = atoi(argv[1]);
        if (colon[1]) group = atoi(colon + 1);
    } else {
        owner = atoi(argv[1]);
    }

    int rc = 0;
    for (int i = 2; i < argc; i++) {
        if (chown(argv[i], owner, group) < 0) {
            fprintf(stderr, "chown: cannot change owner of '%s'\n", argv[i]);
            rc = 1;
        }
    }
    return rc;
}