summaryrefslogtreecommitdiff
path: root/sysutils/xdu/patches/patch-aa
blob: a9d59f4e5e5246600e88ac2cf2febd9d574e3740 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
$NetBSD: patch-aa,v 1.2 2001/08/25 16:34:27 hubertf Exp $

--- xdu.c.orig	Sun Jun  5 21:29:23 1994
+++ xdu.c
@@ -19,13 +19,15 @@
  * limitation a license to do the foregoing actions under any patents of
  * the party supplying this software to the X Consortium.
  */
+#include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include "version.h"
 
 extern char *malloc(), *calloc();
 
-#define	MAXDEPTH	80	/* max elements in a path */
-#define	MAXNAME		1024	/* max pathname element length */
+#define	MAXDEPTH	1024	/* max elements in a path */
+#define	MAXNAME		4096	/* max pathname element length */
 #define	MAXPATH		4096	/* max total pathname length */
 #define	NCOLS		5	/* default number of columns in display */
 
@@ -96,6 +98,10 @@
 	struct	node	*np;
 
 	np = (struct node *)calloc(1,sizeof(struct node));
+	if (np == NULL) {
+		fprintf(stderr, "Out of memory! (#1)\n");
+		exit(1);
+	}
 	np->name = strdup(name);
 	np->size = size;
 	np->num = nnodes;
@@ -232,7 +238,6 @@
 char *filename;
 {
 	char	buf[4096];
-	char	name[4096];
 	int	size;
 	FILE	*fp;
 
@@ -245,9 +250,12 @@
 		}
 	}
 	while (fgets(buf,sizeof(buf),fp) != NULL) {
-		sscanf(buf, "%d %s\n", &size, name);
-		/*printf("%d %s\n", size, name);*/
-		parse_entry(name,size);
+		char *p, *q = NULL;
+		p = strtok_r(buf, " \t", &q);
+		size = atoi(p);
+		p = strtok_r(NULL, "\r\n", &q);
+		/* printf("%d %s\n", size, p); */
+		parse_entry(p,size);
 	}
 	fclose(fp);
 }
@@ -622,6 +630,7 @@
 		100.0*topp->size/rootp->size);
 }
 
+#ifndef __NetBSD__
 char *
 strdup(s)
 char *s;
@@ -631,10 +640,15 @@
 
 	n = strlen(s);
 	cp = malloc(n+1);
+	if (cp == NULL) {
+		fprintf(stderr, "Out of memory! (#2)\n");
+		exit(1);
+	}
 	strcpy(cp,s);
 
 	return	cp;
 }
+#endif /* __NetBSD__ */
 
 /**************** External Entry Points ****************/