Viewing: uname.c
📄 uname.c (Read Only) ⬅ To go back
/* AdrOS uname utility — print system information */
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv) {
    const char* sysname = "AdrOS";
    const char* nodename = "adros";
    const char* release = "0.1.0";
    const char* version = "AdrOS x86 SMP";
    const char* machine = "i686";

    if (argc <= 1) { printf("%s\n", sysname); return 0; }

    int all = 0, s = 0, n = 0, r = 0, v = 0, m = 0;
    for (int i = 1; i < argc; i++) {
        if (strcmp(argv[i], "-a") == 0) all = 1;
        else if (strcmp(argv[i], "-s") == 0) s = 1;
        else if (strcmp(argv[i], "-n") == 0) n = 1;
        else if (strcmp(argv[i], "-r") == 0) r = 1;
        else if (strcmp(argv[i], "-v") == 0) v = 1;
        else if (strcmp(argv[i], "-m") == 0) m = 1;
    }
    if (all) { s = n = r = v = m = 1; }
    if (!s && !n && !r && !v && !m) s = 1;

    int first = 1;
    if (s) { printf("%s%s", first ? "" : " ", sysname); first = 0; }
    if (n) { printf("%s%s", first ? "" : " ", nodename); first = 0; }
    if (r) { printf("%s%s", first ? "" : " ", release); first = 0; }
    if (v) { printf("%s%s", first ? "" : " ", version); first = 0; }
    if (m) { printf("%s%s", first ? "" : " ", machine); first = 0; }
    printf("\n");
    return 0;
}