fixed id, uname
This commit is contained in:
parent
5e28e895e6
commit
e067b7c784
|
@ -56,7 +56,7 @@ int ids(uid_t uid, struct passwd *pwd) {
|
||||||
printf("%d", uid);
|
printf("%d", uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (G_flag)
|
else if (G_flag || g_flag)
|
||||||
print_groups(pwd, "%s", 0);
|
print_groups(pwd, "%s", 0);
|
||||||
|
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
|
@ -76,33 +76,46 @@ int def_ids(uid_t uid, struct passwd *pwd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usage(int sig) {
|
||||||
|
printf("id [user]\n\t[-u User ID] [-g Group ID]\n\t[-G Supplementary group IDs]\n\t[-n Print names instead of numbers]\n\t[-r Print real ID instead of effective ID]\n");
|
||||||
|
exit(sig);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
int opt;
|
int opt;
|
||||||
while ((opt = getopt(argc, argv, "gGnru")) != -1) {
|
while ((opt = getopt(argc, argv, "gGnru")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'g':
|
case 'g':
|
||||||
|
if (G_flag || u_flag)
|
||||||
|
usage(1);
|
||||||
|
|
||||||
g_flag = 1;
|
g_flag = 1;
|
||||||
/* fallthrough */
|
break;
|
||||||
|
|
||||||
case 'G':
|
case 'G':
|
||||||
|
if (g_flag || u_flag)
|
||||||
|
usage(1);
|
||||||
|
|
||||||
G_flag = 1;
|
G_flag = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'n':
|
case 'u':
|
||||||
n_flag = 1;
|
if (G_flag || g_flag)
|
||||||
|
usage(1);
|
||||||
|
|
||||||
|
u_flag = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
r_flag = 1;
|
r_flag = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'u':
|
case 'n':
|
||||||
u_flag = 1;
|
n_flag = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("id [user]\n\t[-u User ID] [-g Group ID]\n\t[-G Supplementary group IDs]\n\t[-n Print names instead of numbers]\n\t[-r Print real ID instead of effective ID]\n");
|
usage(0);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,8 +132,9 @@ int main(int argc, char **argv) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u_flag || G_flag)
|
if (u_flag || G_flag || g_flag)
|
||||||
return ids(uid, pwd);
|
return ids(uid, pwd);
|
||||||
|
|
||||||
return def_ids(uid, pwd);
|
return def_ids(uid, pwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
#if defined(OS_NAME)
|
||||||
|
#elif defined(__ANDROID__)
|
||||||
#define OS_NAME "Android"
|
#define OS_NAME "Android"
|
||||||
|
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
|
@ -24,6 +25,32 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SYSNAME,
|
||||||
|
NODENAME,
|
||||||
|
RELEASE,
|
||||||
|
VERSION,
|
||||||
|
MACHINE,
|
||||||
|
OS,
|
||||||
|
CPU,
|
||||||
|
ALL,
|
||||||
|
COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
char flags[COUNT];
|
||||||
|
unsigned int counter = 0;
|
||||||
|
|
||||||
|
void print(const char *msg) {
|
||||||
|
if (counter > 0 && !flags[ALL])
|
||||||
|
putchar(' ');
|
||||||
|
|
||||||
|
printf("%s", msg);
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
if (flags[ALL] && counter <= COUNT)
|
||||||
|
putchar(' ');
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct utsname uts;
|
struct utsname uts;
|
||||||
if (uname(&uts)) {
|
if (uname(&uts)) {
|
||||||
|
@ -36,53 +63,39 @@ int main(int argc, char **argv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int a_flag = 0;
|
|
||||||
|
|
||||||
int opt;
|
int opt;
|
||||||
while ((opt = getopt(argc, argv, "asnrvmop")) != -1) {
|
while ((opt = getopt(argc, argv, "asnrvmop")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
a_flag = 1;
|
flags[ALL] = 1;
|
||||||
/* fallthrough */
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
printf("%s ", uts.sysname);
|
flags[SYSNAME] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
printf("%s ", uts.nodename);
|
flags[NODENAME] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
printf("%s ", uts.release);
|
flags[RELEASE] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("%s ", uts.version);
|
flags[VERSION] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
printf("%s ", uts.machine);
|
flags[MACHINE] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'o':
|
case 'o':
|
||||||
printf("%s ", OS_NAME);
|
flags[OS] = 1;
|
||||||
if (!a_flag)
|
break;
|
||||||
break;
|
|
||||||
/* fallthrough */
|
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
printf("%s ", uts.machine);
|
flags[CPU] = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -91,5 +104,23 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flags[SYSNAME] || flags[ALL])
|
||||||
|
print(uts.sysname);
|
||||||
|
|
||||||
|
if (flags[NODENAME] || flags[ALL])
|
||||||
|
print(uts.nodename);
|
||||||
|
|
||||||
|
if (flags[VERSION] || flags[ALL])
|
||||||
|
print(uts.version);
|
||||||
|
|
||||||
|
if (flags[MACHINE] || flags[ALL])
|
||||||
|
print(uts.machine);
|
||||||
|
|
||||||
|
if (flags[OS] || flags[ALL])
|
||||||
|
print(OS_NAME);
|
||||||
|
|
||||||
|
if (flags[CPU] || flags[ALL])
|
||||||
|
print("unknow");
|
||||||
|
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue