X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fusers.c;h=cd3c01e83a3da5511b32f4bf2242784b51e3b39c;hb=6526b47b2c63c9f46b63d3a5e72cbe71b04d60ac;hp=58cfb028af751a9aa5f3e1ad8e40f9193e3b4058;hpb=ab0b80e4957b0daaf7a203eca9fc74342941fab9;p=monky diff --git a/src/users.c b/src/users.c index 58cfb02..cd3c01e 100644 --- a/src/users.c +++ b/src/users.c @@ -10,7 +10,7 @@ * Please see COPYING for details * * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen - * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al. + * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al. * (see AUTHORS) * All rights reserved. * @@ -93,32 +93,22 @@ static void user_time(char *ptr) } } } -static void conky_user_time(char *ptr) +static void tty_user_time(char *ptr, char *tty) { - time_t real, diff; - static time_t log_in = 0; + time_t real, diff, log_in; char buf[BUFLEN] = ""; - if (log_in == 0) { - struct utmp *usr, line; - char *real_tty_path = NULL; + struct utmp *usr, line; - real_tty_path = ttyname(0); - if (real_tty_path == NULL ) { - return; - } + setutent(); + strcpy(line.ut_line, tty); + usr = getutline(&line); + if (usr == NULL ) { + return; + } - real_tty_path += 5; /* Remove "/dev/". */ + log_in = usr->ut_time; - setutent(); - strcpy(line.ut_line, real_tty_path); - usr = getutline(&line); - if (usr == NULL ) { - return; - } - - log_in = usr->ut_time; - } time(&real); diff = difftime(real, log_in); format_seconds(buf, BUFLEN, diff); @@ -137,20 +127,19 @@ static void users_alloc(struct information *ptr) if (ptr->users.times == NULL) { ptr->users.times = malloc(text_buffer_size); } - if (ptr->users.ctime == NULL) { - ptr->users.ctime = malloc(text_buffer_size); - } } -void update_users(void) +void update_user_time(char *tty) { struct information *current_info = &info; char temp[BUFLEN] = ""; - int t; - users_alloc(current_info); - user_name(temp); - temp[0] = 0; - conky_user_time(temp); + + if (current_info->users.ctime == NULL) { + current_info->users.ctime = malloc(text_buffer_size); + } + + tty_user_time(temp, tty); + if (temp != NULL) { if (current_info->users.ctime) { free(current_info->users.ctime); @@ -166,7 +155,15 @@ void update_users(void) current_info->users.ctime = malloc(text_buffer_size); strncpy(current_info->users.ctime, "broken", text_buffer_size); } - temp[0] = 0; +} + +void update_users(void) +{ + struct information *current_info = &info; + char temp[BUFLEN] = ""; + int t; + users_alloc(current_info); + user_name(temp); if (temp != NULL) { if (current_info->users.names) { free(current_info->users.names);