summaryrefslogtreecommitdiff
path: root/net/netatalk-asun/files/patch-an
blob: 384f245e4aac2db738dd9ddd5a9135140d4780bb (plain) (blame)
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
--- etc/afpd/volume.c.orig	Tue Mar  2 01:40:57 1999
+++ etc/afpd/volume.c	Tue Mar  2 01:40:21 1999
@@ -159,13 +159,29 @@
 {
     struct vol	*volume;
     int		vlen;
+    char	p[PATH_MAX];
 
-    if ( name == NULL || *name == '\0' ) {
+    if ( name != NULL && name[0] != '\0') {
+    	strncpy( p, name, 27+1 );
+    } else {
 	if (( name = strrchr( path, '/' )) == NULL ) {
 	    return -1;	/* Obviously not a fully qualified path */
 	}
-	name++;
+
+	strncpy( p, path, PATH_MAX );
+	name = p + (name - path);
+	/* Find last non-empty component */
+	while ( name != NULL && ( name[1] == '\0' || name[1] == '/' )) {
+	    name[0] = '\0';
+	    name = strrchr( p, '/' );
+	}
+	if ( name == NULL ) {
+	    strcpy( p, "(root)" );
+	} else {
+	    memmove( p, name + 1, strlen( name )+1 );
+	}
     }
+    name = p;
 
     for ( volume = volumes; volume; volume = volume->v_next ) {
 	if ( strcasecmp( volume->v_name, name ) == 0 ) {