File: userinfo.c

package info (click to toggle)
eclipse-titan 6.5.0-1
  • links: PTS
  • area: main
  • in suites: buster
  • size: 101,128 kB
  • sloc: cpp: 259,139; ansic: 47,560; yacc: 22,554; makefile: 14,074; sh: 12,630; lex: 9,101; xml: 5,362; java: 4,849; perl: 3,784; awk: 48; php: 32; python: 13
file content (69 lines) | stat: -rw-r--r-- 2,101 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/******************************************************************************
 * Copyright (c) 2000-2018 Ericsson Telecom AB
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
 *
 * Contributors:
 *   Balasko, Jeno
 *   Delic, Adam
 *   Szabo, Janos Zoltan – initial implementation
 *
 ******************************************************************************/
#include <time.h>
#include <unistd.h>
#ifdef MINGW
# include <windows.h>
# include <lmcons.h>
#else
# include <pwd.h>
#endif

#include "memory.h"
#include "userinfo.h"

char *get_user_info(void)
{
  char *ret_val;
  time_t t;
  const char *current_time;
#ifdef MINGW
  TCHAR user_name[UNLEN + 1], computer_name[MAX_COMPUTERNAME_LENGTH + 1];
  DWORD buffer_size = sizeof(user_name);
  if (GetUserName(user_name, &buffer_size)) ret_val = mcopystr(user_name);
  else ret_val = mcopystr("unknown");
  ret_val = mputc(ret_val, '@');
  buffer_size = sizeof(computer_name);
  if (GetComputerName(computer_name, &buffer_size))
    ret_val = mputstr(ret_val, computer_name);
  else ret_val = mputstr(ret_val, "unknown");
#else
  struct passwd *p;
  char host_name[256];
  setpwent();
  p = getpwuid(getuid());
  if (p != NULL) {
    size_t i;
    for (i = 0; p->pw_gecos[i] != '\0'; i++) {
      if (p->pw_gecos[i] == ',') {
        /* Truncating additional info (e.g. phone number) after the full name */
        p->pw_gecos[i] = '\0';
        break;
      }
    }
    ret_val = mprintf("%s (%s", p->pw_gecos, p->pw_name);
  } else ret_val = mcopystr("Unknown User (unknown");
  endpwent();
  if (gethostname(host_name, sizeof(host_name)))
    ret_val = mputstr(ret_val, "@unknown)");
  else {
    host_name[sizeof(host_name) - 1] = '\0';
    ret_val = mputprintf(ret_val, "@%s)", host_name);
  }
#endif
  t = time(NULL);
  current_time = ctime(&t);
  ret_val = mputprintf(ret_val, " on %s", current_time);
  return ret_val;
}