[Goodies-commits] r1915 - in xfce4-taskmanager/trunk: . src
Johannes Zellner
nebulon at xfce.org
Wed Aug 23 20:08:12 CEST 2006
Author: nebulon
Date: 2006-08-23 18:08:08 +0000 (Wed, 23 Aug 2006)
New Revision: 1915
Added:
xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.c
xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.h
Modified:
xfce4-taskmanager/trunk/aclocal.m4
xfce4-taskmanager/trunk/src/Makefile.am
xfce4-taskmanager/trunk/src/functions.c
xfce4-taskmanager/trunk/src/functions.h
xfce4-taskmanager/trunk/src/interface.c
xfce4-taskmanager/trunk/src/interface.h
Log:
* some files renamed
* few small security changes
Modified: xfce4-taskmanager/trunk/aclocal.m4
===================================================================
--- xfce4-taskmanager/trunk/aclocal.m4 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/aclocal.m4 2006-08-23 18:08:08 UTC (rev 1915)
@@ -592,6 +592,31 @@
# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+# isc-posix.m4 serial 2 (gettext-0.11.2)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
+
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it. Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+ [
+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+ ]
+)
+
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
# serial 48 AC_PROG_LIBTOOL
Modified: xfce4-taskmanager/trunk/src/Makefile.am
===================================================================
--- xfce4-taskmanager/trunk/src/Makefile.am 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/src/Makefile.am 2006-08-23 18:08:08 UTC (rev 1915)
@@ -9,7 +9,7 @@
callbacks.c callbacks.h \
functions.c functions.h \
interface.c interface.h \
- linux.c linux.h \
+ xfce-taskmanager-linux.c xfce-taskmanager-linux.h \
types.h
xfce4_taskmanager_CFLAGS = \
Modified: xfce4-taskmanager/trunk/src/functions.c
===================================================================
--- xfce4-taskmanager/trunk/src/functions.c 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/src/functions.c 2006-08-23 18:08:08 UTC (rev 1915)
@@ -101,7 +101,7 @@
}
g_array_free(new_task_list, TRUE);
-
+
return TRUE;
}
Modified: xfce4-taskmanager/trunk/src/functions.h
===================================================================
--- xfce4-taskmanager/trunk/src/functions.h 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/src/functions.h 2006-08-23 18:08:08 UTC (rev 1915)
@@ -28,12 +28,18 @@
#include <sys/stat.h>
#include <sys/param.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include <libxfce4util/libxfce4util.h>
#include "types.h"
-#include "linux.h"
+#include "interface.h"
+#ifdef LINUX
+#include "xfce-taskmanager-linux.h"
+#endif
+
#define PROC_DIR_1 "/compat/linux/proc"
#define PROC_DIR_2 "/emul/linux/proc"
#define PROC_DIR_3 "/proc"
Modified: xfce4-taskmanager/trunk/src/interface.c
===================================================================
--- xfce4-taskmanager/trunk/src/interface.c 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/src/interface.c 2006-08-23 18:08:08 UTC (rev 1915)
@@ -283,14 +283,14 @@
gtk_tree_store_set(GTK_TREE_STORE(list_store), iter, COLUMN_UNAME, uname, -1);
gtk_tree_store_set(GTK_TREE_STORE(list_store), iter, COLUMN_TIME, time, -1);
- free(pid);
- free(ppid);
- free(state);
- free(size);
- free(rss);
- free(name);
- free(uname);
- free(time);
+ g_free(pid);
+ g_free(ppid);
+ g_free(state);
+ g_free(size);
+ g_free(rss);
+ g_free(name);
+ g_free(uname);
+ g_free(time);
}
}
@@ -355,12 +355,12 @@
if(pid == atoi(str_data))
{
- free(str_data);
+ g_free(str_data);
gtk_tree_store_remove(GTK_TREE_STORE(list_store), &iter);
break;
}
- free(str_data);
+ g_free(str_data);
valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter);
}
}
Modified: xfce4-taskmanager/trunk/src/interface.h
===================================================================
--- xfce4-taskmanager/trunk/src/interface.h 2006-08-20 20:56:31 UTC (rev 1914)
+++ xfce4-taskmanager/trunk/src/interface.h 2006-08-23 18:08:08 UTC (rev 1915)
@@ -30,6 +30,7 @@
#include <unistd.h>
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
Added: xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.c
===================================================================
--- xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.c (rev 0)
+++ xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.c 2006-08-23 18:08:08 UTC (rev 1915)
@@ -0,0 +1,152 @@
+#include "xfce-taskmanager-linux.h"
+
+struct task get_task_details(gint pid)
+{
+ FILE *task_file;
+ FILE *cmdline_file;
+ gchar dummy[255];
+ gchar buffer_status[255];
+ struct task task;
+ struct passwd *passwdp;
+ struct stat status;
+ gchar filename[255];
+ gchar cmdline_filename[255];
+
+ sprintf(filename, "/proc/%i/stat", pid);
+ sprintf(cmdline_filename, "/proc/%i/cmdline", pid);
+
+ stat(filename, &status);
+
+ task.pid = -1;
+ task.checked = FALSE;
+
+ if((task_file = fopen(filename,"r")) != NULL)
+ {
+ while(fgets(buffer_status, sizeof(buffer_status), task_file) != NULL)
+ {
+ gint utime = 0;
+ gint stime = 0;
+
+ sscanf(buffer_status, "%i (%255s %1s %i %i %i %i %i %255s %255s %255s %255s %255s %i %i %i %i %i %i %i %i %i %i %i %255s %255s %255s %i %255s %255s %255s %255s %255s %255s %255s %255s %255s %255s %i %255s %255s",
+ &task.pid, // processid
+ &task.name, // processname
+ &task.state, // processstate
+ &task.ppid, // parentid
+ &dummy, // processs groupid
+
+ &dummy, // session id
+ &dummy, // tty id
+ &dummy, // tpgid: The process group ID of the process running on tty of the process
+ &dummy, // flags
+ &dummy, // minflt minor faults the process has maid
+
+ &dummy, // cminflt
+ &dummy, // majflt
+ &dummy, // cmajflt
+ &utime, // utime the number of jiffies that this process has scheduled in user mode
+ &stime, // stime " kernel mode
+
+ &dummy, // cutime " waited for children in user
+ &dummy, // cstime " kernel mode
+ &dummy, // priority (nice value + fifteen)
+ &dummy, // nice range from 19 to -19
+ &dummy, // hardcoded 0
+
+ &dummy, // itrealvalue time in jiffies to next SIGALRM send to this process
+ &dummy, // starttime jiffies the process startet after system boot
+ &task.size, // vsize in bytes
+ &task.rss, // rss
+ &dummy, // rlim limit in bytes for rss
+
+ &dummy, // startcode
+ &dummy, // endcode
+ &dummy, // startstack
+ &dummy, // kstkesp value of esp (stack pointer)
+ &dummy, // kstkeip value of EIP (instruction pointer)
+
+ &dummy, // signal. bitmap of pending signals
+ &dummy, // blocked: bitmap of blocked signals
+ &dummy, // sigignore: bitmap of ignored signals
+ &dummy, // sigcatch: bitmap of catched signals
+ &dummy, // wchan
+
+ &dummy, // nswap
+ &dummy, // cnswap
+ &dummy, // exit_signal
+ &dummy, // CPU number last executed on
+ &dummy,
+
+ &dummy
+ );
+ task.time = stime + utime;
+ task.old_time = task.time;
+ task.time_percentage = 0;
+ }
+ task.uid = status.st_uid;
+ passwdp = getpwuid(task.uid);
+ if(passwdp != NULL && passwdp->pw_name != NULL)
+ g_strlcpy(task.uname, passwdp->pw_name, sizeof task.uname);
+ }
+
+
+ if(task_file != NULL)
+ fclose(task_file);
+
+ if((cmdline_file = fopen(cmdline_filename,"r")) != NULL)
+ {
+ gchar dummy[255];
+ strcpy(&dummy, "");
+ fscanf(cmdline_file, "%255s", &dummy);
+ if(strcmp(dummy, "") != 0)
+ {
+ if(g_strrstr(dummy,"/") != NULL)
+ g_strlcpy(task.name, g_strrstr(dummy,"/")+1, 255);
+ else
+ g_strlcpy(task.name, dummy, 255);
+
+ // workaround for cmd-line entries with leading "-"
+ if(g_str_has_prefix(task.name, "-"))
+ sscanf(task.name, "-%255s", task.name);
+ }
+ }
+
+ if(cmdline_file != NULL)
+ fclose(cmdline_file);
+
+ if(g_str_has_suffix(task.name, ")"))
+ *g_strrstr(task.name, ")") = '\0';
+
+ return task;
+}
+
+GArray *get_task_list()
+{
+ DIR *dir;
+ struct dirent *dir_entry;
+ GArray *task_list;
+
+ task_list = g_array_new (FALSE, FALSE, sizeof (struct task));
+
+ if((dir = opendir("/proc/")) == NULL)
+ {
+ fprintf(stderr, "Error: couldn't load the /proc directory\n");
+ return NULL;
+ }
+
+ gint count = 0;
+
+ while((dir_entry = readdir(dir)) != NULL)
+ {
+ if(atoi(dir_entry->d_name) != 0)
+ {
+ struct task task = get_task_details(atoi(dir_entry->d_name));
+ if(task.pid != -1)
+ g_array_append_val(task_list, task);
+ }
+ count++;
+ }
+
+ closedir(dir);
+
+ return task_list;
+}
Property changes on: xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.c
___________________________________________________________________
Name: svn:executable
+ *
Added: xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.h
===================================================================
--- xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.h (rev 0)
+++ xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.h 2006-08-23 18:08:08 UTC (rev 1915)
@@ -0,0 +1,17 @@
+#ifndef LINUX_H
+#define LINUX_H
+
+#include <glib.h>
+#include <dirent.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "types.h"
+
+struct task get_task_details(gint pid);
+GArray *get_task_list();
+
+#endif
Property changes on: xfce4-taskmanager/trunk/src/xfce-taskmanager-linux.h
___________________________________________________________________
Name: svn:executable
+ *
More information about the Goodies-commits
mailing list