diff --git a/procps/ps.c b/procps/ps.c
index fcb605a..aa40860 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -49,14 +49,12 @@
  */
 
 typedef struct proc_s {
-	char
-	 cmd[16];					/* basename of executable file in call to exec(2) */
-	int
-	 ruid,						/* real only (sorry) */
-	 pid,						/* process id */
-	 ppid;						/* pid of parent process */
-	char
-	 state;						/* single-char code for process state (S=sleeping) */
+	char cmd[16];					/* basename of executable file in call to exec(2) */
+	int ruid;						/* real only (sorry) */
+	int pid;						/* process id */
+	int ppid;						/* pid of parent process */
+	char state;						/* single-char code for process state (S=sleeping) */
+	unsigned int vmsize;			/* size of process as far as the vm is concerned */
 } proc_t;
 
 
@@ -87,6 +85,8 @@
 	tmp = strstr(S, "State");
 	sscanf(tmp, "State:\t%c", &P->state);
 
+	P->pid = 0;
+	P->ppid = 0;
 	tmp = strstr(S, "Pid:");
 	if (tmp)
 		sscanf(tmp, "Pid:\t%d\n" "PPid:\t%d\n", &P->pid, &P->ppid);
@@ -94,13 +94,21 @@
 		error_msg("Internal error!");
 
 	/* For busybox, ignoring effective, saved, etc. */
+	P->ruid = 0;
 	tmp = strstr(S, "Uid:");
 	if (tmp)
 		sscanf(tmp, "Uid:\t%d", &P->ruid);
 	else
 		error_msg("Internal error!");
-
-
+	
+	P->vmsize = 0;
+	tmp = strstr(S, "VmSize:");
+	if (tmp)
+		sscanf(tmp, "VmSize:\t%d", &P->vmsize);
+#if 0
+	else
+		error_msg("Internal error!");
+#endif
 }
 
 extern int ps_main(int argc, char **argv)
@@ -131,7 +139,7 @@
 			terminal_width = win.ws_col - 1;
 #endif
 
-	printf("  PID  Uid     Stat Command\n");
+	printf("  PID  Uid     VmSize Stat Command\n");
 	while ((entry = readdir(dir)) != NULL) {
 		if (!isdigit(*entry->d_name))
 			continue;
@@ -150,7 +158,10 @@
 		if (file == NULL)
 			continue;
 		i = 0;
-		len = printf("%5d %-8s %c    ", p.pid, uidName, p.state);
+		if(p.vmsize == 0)
+			len = printf("%5d %-8s        %c    ", p.pid, uidName, p.state);
+		else
+			len = printf("%5d %-8s %6d %c    ", p.pid, uidName, p.vmsize, p.state);
 		while (((c = getc(file)) != EOF) && (i < (terminal_width-len))) {
 			i++;
 			if (c == '\0')
@@ -235,8 +246,10 @@
 		if (*uidName == '\0')
 			sprintf(uidName, "%ld", info.euid);
 
-		len = printf("%5d %-8s %c    ", info.pid, uidName, info.state);
-
+		if(p.vmsize == 0)
+			len = printf("%5d %-8s        %c    ", p.pid, uidName, p.state);
+		else
+			len = printf("%5d %-8s %6d %c    ", p.pid, uidName, p.vmsize, p.state);
 		if (strlen(info.command_line) > 1) {
 			for( j=0; j<(sizeof(info.command_line)-1) && j < (terminal_width-len); j++) {
 				if (*(info.command_line+j) == '\0' && *(info.command_line+j+1) != '\0') {
