From: Piotr Caban piotr@codeweavers.com
--- programs/whoami/main.c | 61 +++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/programs/whoami/main.c b/programs/whoami/main.c index 6aa6a3f2c19..31966ec9d66 100644 --- a/programs/whoami/main.c +++ b/programs/whoami/main.c @@ -219,7 +219,7 @@ static int logon_id(void) return 0; }
-static int user(void) +static int user(enum format format, BOOL skip_header) { PSID sid; WCHAR *name; @@ -246,23 +246,47 @@ static int user(void) return 1; }
- output_write(L"\nUSER INFORMATION\n----------------\n\n", -1); - output_write(L"User Name", -1); - for (i = 0; i <= max(wcslen(name), wcslen(L"User Name")) - wcslen(L"User Name"); i++) - output_write(L" ", 1); - output_write(L"SID\n", -1); + if (format != FORMAT_CSV && !skip_header) + output_write(L"\nUSER INFORMATION\n----------------\n\n", -1);
- for (i = 0; i < wcslen(name); i++) - output_write(L"=", 1); - output_write(L" ", 1); - for (i = 0; i < wcslen(sid_string); i++) - output_write(L"=", 1); - output_write(L"\n", 1); + switch(format) + { + case FORMAT_LIST: + output_write(L"User Name: ", -1); + output_write(name, -1); + output_write(L"\nSID: ", -1); + output_write(sid_string, -1); + output_write(L"\n", -1); + break; + case FORMAT_CSV: + if (!skip_header) output_write(L""User Name","SID"\n", -1); + output_write(L""", -1); + output_write(name, -1); + output_write(L"","", -1); + output_write(sid_string, -1); + output_write(L""\n", -1); + break; + case FORMAT_TABLE: + if (!skip_header) + { + output_write(L"User Name", -1); + for (i = 0; i <= max(wcslen(name), wcslen(L"User Name")) - wcslen(L"User Name"); i++) + output_write(L" ", 1); + output_write(L"SID\n", -1); + + for (i = 0; i < wcslen(name); i++) + output_write(L"=", 1); + output_write(L" ", 1); + for (i = 0; i < wcslen(sid_string); i++) + output_write(L"=", 1); + output_write(L"\n", 1); + }
- output_write(name, -1); - output_write(L" ", 1); - output_write(sid_string, -1); - output_write(L"\n", 1); + output_write(name, -1); + output_write(L" ", 1); + output_write(sid_string, -1); + output_write(L"\n", 1); + }
free(name); free(sid); @@ -369,10 +393,11 @@ int __cdecl wmain(int argc, WCHAR *argv[]) return simple(NameFullyQualifiedDN); case ARG_LOGONID: return logon_id(); - case ARG_USER: - return user(); }
+ if ((arg & ARG_ALL) == ARG_USER) + return user(format, arg & ARG_NH); + FIXME("stub\n"); return 1; }