smapsum.c
author viric@llimona
Fri, 23 Feb 2007 23:54:45 +0100
changeset 0 5425a5439bcd
permissions -rw-r--r--
Unua versio.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     1
#include <stdio.h>
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     2
#include <string.h>
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     3
#include <stdlib.h>
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     4
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     5
static char showtitle = 1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     6
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     7
struct Filemap
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     8
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
     9
	char name[300];
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    10
	int size;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    11
	int rss;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    12
	int shared_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    13
	int shared_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    14
	int private_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    15
	int private_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    16
	enum {
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    17
		PRIVATE,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    18
		SHARED
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    19
	} type;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    20
	char readable;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    21
	char writable;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    22
	char executable;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    23
	int inode;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    24
	struct {
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    25
		unsigned char major;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    26
		unsigned char minor;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    27
	} device;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    28
};
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    29
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    30
struct Totals
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    31
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    32
	int size;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    33
	int rss;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    34
	int shared_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    35
	int shared_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    36
	int private_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    37
	int private_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    38
	char cmd[200];
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    39
};
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    40
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    41
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    42
static int readkb(const char *field, FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    43
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    44
	int kb;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    45
	int res;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    46
	char line[200];
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    47
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    48
	strcpy(line, field);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    49
	strcat(line, " %i kB\n");
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    50
	res = fscanf(stream, line, &kb);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    51
	if (res != 1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    52
		return -1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    53
	return kb;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    54
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    55
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    56
static int readsize(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    57
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    58
	return readkb("Size:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    59
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    60
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    61
static int readrss(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    62
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    63
	return readkb("Rss:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    64
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    65
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    66
static int readshared_clean(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    67
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    68
	return readkb("Shared_Clean:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    69
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    70
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    71
static int readshared_dirty(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    72
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    73
	return readkb("Shared_Dirty:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    74
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    75
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    76
static int readprivate_clean(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    77
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    78
	return readkb("Private_Clean:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    79
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    80
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    81
static int readprivate_dirty(FILE *stream)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    82
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    83
	return readkb("Private_Dirty:", stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    84
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    85
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    86
static int readfilemap(FILE *stream, struct Filemap *map)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    87
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    88
	int res;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    89
	char type;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    90
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    91
	unsigned int major;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    92
	unsigned int minor;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    93
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    94
	res = fscanf(stream, "%*x-%*x %c%c%c%c %*x %x:%x %i",
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    95
			&map->readable,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    96
			&map->writable,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    97
			&map->executable,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    98
			&type,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
    99
			&major,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   100
			&minor,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   101
			&map->inode);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   102
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   103
	if (res != 7)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   104
		return -1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   105
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   106
	fgets(map->name, 300, stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   107
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   108
	map->device.major = major;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   109
	map->device.minor = minor;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   110
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   111
	if (type == 's')
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   112
		map->type = PRIVATE;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   113
	else
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   114
		map->type = SHARED;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   115
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   116
	if (map->readable == '-')
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   117
		map->readable = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   118
	if (map->writable == '-')
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   119
		map->writable = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   120
	if (map->executable == '-')
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   121
		map->executable = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   122
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   123
	map->size = readsize(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   124
	if (map->size == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   125
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   126
	map->rss = readrss(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   127
	if (map->rss == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   128
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   129
	map->shared_clean = readshared_clean(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   130
	if (map->shared_clean == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   131
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   132
	map->shared_dirty = readshared_dirty(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   133
	if (map->shared_dirty == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   134
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   135
	map->private_clean = readprivate_clean(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   136
	if (map->private_clean == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   137
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   138
	map->private_dirty = readprivate_dirty(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   139
	if (map->private_dirty == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   140
		return -2;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   141
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   142
	return 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   143
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   144
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   145
static int readsmap(const int pid, struct Totals *totals)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   146
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   147
	FILE *stream;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   148
	char filename[100];
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   149
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   150
	snprintf(filename, 100, "/proc/%i/smaps", pid);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   151
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   152
	stream = fopen(filename, "r");
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   153
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   154
	if (stream == 0)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   155
		return -1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   156
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   157
	totals->size = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   158
	totals->rss = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   159
	totals->shared_clean = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   160
	totals->shared_dirty = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   161
	totals->private_clean = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   162
	totals->private_dirty = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   163
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   164
	while(!feof(stream))
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   165
	{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   166
		struct Filemap map;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   167
		int res;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   168
		res = readfilemap(stream, &map);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   169
		if (res == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   170
			break;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   171
		if (res == -2)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   172
		{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   173
			fprintf(stderr, "ERROR READING %s\n", filename);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   174
			break;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   175
		}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   176
		/*printf("Map: %s\n", map.name);*/
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   177
		totals->size = totals->size + map.size;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   178
		totals->rss = totals->rss + map.rss;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   179
		totals->shared_clean = totals->shared_clean + map.shared_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   180
		totals->shared_dirty = totals->shared_dirty + map.shared_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   181
		totals->private_clean = totals->private_clean
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   182
			+ map.private_clean;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   183
		totals->private_dirty = totals->private_dirty
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   184
			+ map.private_dirty;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   185
	}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   186
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   187
	fclose(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   188
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   189
	/* Read the cmd */
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   190
	totals->cmd[0] = '\0';
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   191
	snprintf(filename, 100, "/proc/%i/cmdline", pid);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   192
	stream = fopen(filename, "r");
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   193
	fgets(totals->cmd, 200, stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   194
	fclose(stream);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   195
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   196
	return 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   197
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   198
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   199
static void showtotals(const int pid, const struct Totals *totals)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   200
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   201
	if (showtitle)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   202
		printf("PID\tSIZE\tRSS\tS_CLN\tS_DTY\tP_CLN\tP_DTY\tCMD\n");
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   203
	printf("%i\t%i\t%i\t%i\t%i\t%i\t%i\t%s\n",
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   204
			pid,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   205
			totals->size,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   206
			totals->rss,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   207
			totals->shared_clean,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   208
			totals->shared_dirty,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   209
			totals->private_clean,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   210
			totals->private_dirty,
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   211
			totals->cmd);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   212
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   213
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   214
static void showhelp(const char *progname)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   215
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   216
	fprintf(stderr,"usage: %s <pid>\n", progname);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   217
}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   218
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   219
int main(int argc, char *argv[])
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   220
{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   221
	int pid;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   222
	struct Totals t;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   223
	int res;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   224
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   225
	if (argc < 2)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   226
	{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   227
		showhelp(argv[0]);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   228
		return 1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   229
	}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   230
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   231
	if (argc == 2)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   232
		pid = atoi(argv[1]);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   233
	else
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   234
	{
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   235
		if (argv[1][1] == 'q')
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   236
			showtitle = 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   237
		pid = atoi(argv[2]);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   238
	}
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   239
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   240
	res = readsmap(pid, &t);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   241
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   242
	if (res == -1)
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   243
		return -1;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   244
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   245
	showtotals(pid, &t);
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   246
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   247
	return 0;
5425a5439bcd Unua versio.
viric@llimona
parents:
diff changeset
   248
}