annotate 3rdparty/packages/uucpbb/src/getdirs.c @ 2855:e126b9acab32 lwtools-port

rules.mak: Do not hardcode path for "echo" It is basically the only tool with full path here and I don't see any reason for it. We don't use special echo options that would fail on the shell built-in echo. Also don't hardcode path for losetup. sudo should make sure you have the relevant location in your path, and that the path is sanitized, otherwise your sudo setup is broken.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 13 Jul 2013 11:30:31 +0200
parents 5ba8e711a1a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1772
5ba8e711a1a3 source added
boisy
parents:
diff changeset
1 /* getdirs.c Routine to get pathname for specified directory.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
2 Copyright (C) 1993 Bob Billson
5ba8e711a1a3 source added
boisy
parents:
diff changeset
3
5ba8e711a1a3 source added
boisy
parents:
diff changeset
4 This file is part of the OS-9 UUCP package, UUCPbb.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
5
5ba8e711a1a3 source added
boisy
parents:
diff changeset
6 This program is free software; you can redistribute it and/or modify
5ba8e711a1a3 source added
boisy
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
5ba8e711a1a3 source added
boisy
parents:
diff changeset
8 the Free Software Foundation; either version 2 of the License, or
5ba8e711a1a3 source added
boisy
parents:
diff changeset
9 (at your option) any later version.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
10
5ba8e711a1a3 source added
boisy
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
5ba8e711a1a3 source added
boisy
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
5ba8e711a1a3 source added
boisy
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5ba8e711a1a3 source added
boisy
parents:
diff changeset
14 GNU General Public License for more details.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
15
5ba8e711a1a3 source added
boisy
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
5ba8e711a1a3 source added
boisy
parents:
diff changeset
17 along with this program; if not, write to the Free Software
5ba8e711a1a3 source added
boisy
parents:
diff changeset
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
19
5ba8e711a1a3 source added
boisy
parents:
diff changeset
20 The author of UUCPbb, Bob Billson, can be contacted at:
5ba8e711a1a3 source added
boisy
parents:
diff changeset
21 bob@kc2wz.bubble.org or uunet!kc2wz!bob or by snail mail:
5ba8e711a1a3 source added
boisy
parents:
diff changeset
22 21 Bates Way, Westfield, NJ 07090
5ba8e711a1a3 source added
boisy
parents:
diff changeset
23 */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
24
5ba8e711a1a3 source added
boisy
parents:
diff changeset
25 /* Function to get directory name from the /dd/sys/uucp/Parameters file. A
5ba8e711a1a3 source added
boisy
parents:
diff changeset
26 pointer to a malloc()'ed string containing the name is returned. It is the
5ba8e711a1a3 source added
boisy
parents:
diff changeset
27 responsibility of the calling function to free() the memory when it is no
5ba8e711a1a3 source added
boisy
parents:
diff changeset
28 longer needed. If the Parameters file can't be read or no matching
5ba8e711a1a3 source added
boisy
parents:
diff changeset
29 directory is found, a NULL is returned. */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
30
5ba8e711a1a3 source added
boisy
parents:
diff changeset
31 #include "uucp.h"
5ba8e711a1a3 source added
boisy
parents:
diff changeset
32
5ba8e711a1a3 source added
boisy
parents:
diff changeset
33 #define WORDSIZE 3
5ba8e711a1a3 source added
boisy
parents:
diff changeset
34
5ba8e711a1a3 source added
boisy
parents:
diff changeset
35 EXTERN char fname[];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
36 EXTERN QQ unsigned myuid;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
37
5ba8e711a1a3 source added
boisy
parents:
diff changeset
38
5ba8e711a1a3 source added
boisy
parents:
diff changeset
39 char *getdirs (directory)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
40 char *directory;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
41 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
42 char line[100];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
43 register char *p;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
44 FILE *fp;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
45 char *p2, *words[WORDSIZE];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
46 int n, linecount, dirlen = strlen (directory);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
47
5ba8e711a1a3 source added
boisy
parents:
diff changeset
48 p = line;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
49 sprintf (fname, "%s/Parameters", UUCPSYS);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
50 asetuid (0);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
51
5ba8e711a1a3 source added
boisy
parents:
diff changeset
52 if ((fp = fopen (fname, "r")) == NULL)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
53 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
54 sprintf (p, "getdirs: can't open %s", fname);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
55 asetuid (myuid);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
56 return (p2);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
57 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
58
5ba8e711a1a3 source added
boisy
parents:
diff changeset
59 asetuid (myuid);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
60 p2 = (char *)NULL;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
61 linecount = 0;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
62 while (mfgets (p, sizeof (line), fp) != NULL)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
63 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
64 ++linecount;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
65
5ba8e711a1a3 source added
boisy
parents:
diff changeset
66 if (strnucmp (directory, p, dirlen) == 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
67 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
68 n = getargs (words, p, WORDSIZE);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
69
5ba8e711a1a3 source added
boisy
parents:
diff changeset
70 if (n != 3 || words[1][0] != '=')
5ba8e711a1a3 source added
boisy
parents:
diff changeset
71 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
72 fprintf (stderr,
5ba8e711a1a3 source added
boisy
parents:
diff changeset
73 "getdirs: bad line in Parameters at line %d\n",
5ba8e711a1a3 source added
boisy
parents:
diff changeset
74 linecount);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
75 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
76 else
5ba8e711a1a3 source added
boisy
parents:
diff changeset
77 p2 = strdup (words[2]);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
78 break;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
79 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
80 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
81 fclose (fp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
82 return (p2);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
83 }