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);
|
||||
}
|
||||
|
||||
if (G_flag)
|
||||
else if (G_flag || g_flag)
|
||||
print_groups(pwd, "%s", 0);
|
||||
|
||||
putchar('\n');
|
||||
|
@ -76,33 +76,46 @@ int def_ids(uid_t uid, struct passwd *pwd) {
|
|||
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 opt;
|
||||
while ((opt = getopt(argc, argv, "gGnru")) != -1) {
|
||||
switch (opt) {
|
||||
case 'g':
|
||||
if (G_flag || u_flag)
|
||||
usage(1);
|
||||
|
||||
g_flag = 1;
|
||||
/* fallthrough */
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
if (g_flag || u_flag)
|
||||
usage(1);
|
||||
|
||||
G_flag = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
n_flag = 1;
|
||||
case 'u':
|
||||
if (G_flag || g_flag)
|
||||
usage(1);
|
||||
|
||||
u_flag = 1;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
r_flag = 1;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
u_flag = 1;
|
||||
case 'n':
|
||||
n_flag = 1;
|
||||
break;
|
||||
|
||||
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");
|
||||
return 0;
|
||||
usage(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,8 +132,9 @@ int main(int argc, char **argv) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
if (u_flag || G_flag)
|
||||
if (u_flag || G_flag || g_flag)
|
||||
return ids(uid, pwd);
|
||||
|
||||
return def_ids(uid, pwd);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
#include <unistd.h>
|
||||
#include <sys/utsname.h>
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#if defined(OS_NAME)
|
||||
#elif defined(__ANDROID__)
|
||||
#define OS_NAME "Android"
|
||||
|
||||
#elif defined(__linux__)
|
||||
|
@ -24,6 +25,32 @@
|
|||
|
||||
#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) {
|
||||
struct utsname uts;
|
||||
if (uname(&uts)) {
|
||||
|
@ -36,53 +63,39 @@ int main(int argc, char **argv) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
unsigned int a_flag = 0;
|
||||
|
||||
int opt;
|
||||
while ((opt = getopt(argc, argv, "asnrvmop")) != -1) {
|
||||
switch (opt) {
|
||||
case 'a':
|
||||
a_flag = 1;
|
||||
/* fallthrough */
|
||||
flags[ALL] = 1;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
printf("%s ", uts.sysname);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[SYSNAME] = 1;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
printf("%s ", uts.nodename);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[NODENAME] = 1;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
printf("%s ", uts.release);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[RELEASE] = 1;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
printf("%s ", uts.version);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[VERSION] = 1;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
printf("%s ", uts.machine);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[MACHINE] = 1;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
printf("%s ", OS_NAME);
|
||||
if (!a_flag)
|
||||
break;
|
||||
/* fallthrough */
|
||||
flags[OS] = 1;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
printf("%s ", uts.machine);
|
||||
flags[CPU] = 1;
|
||||
break;
|
||||
|
||||
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');
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue