1 |
/* Filesystem management for NFS server |
/* Filesystem management for NFS server |
2 |
Copyright (C) 1996 Free Software Foundation, Inc. |
Copyright (C) 1996, 2002 Free Software Foundation, Inc. |
3 |
Written by Michael I. Bushnell, p/BSG. |
Written by Michael I. Bushnell, p/BSG. |
4 |
|
|
5 |
This file is part of the GNU Hurd. |
This file is part of the GNU Hurd. |
65 |
index_file = fopen (index_file_name, "r"); |
index_file = fopen (index_file_name, "r"); |
66 |
if (!index_file) |
if (!index_file) |
67 |
{ |
{ |
68 |
fprintf (stderr, "%s: Cannot open `%s': %s\n", |
error (0, errno, "Cannot open `%s'", index_file_name); |
|
program_invocation_name, index_file_name, strerror (errno)); |
|
69 |
return; |
return; |
70 |
} |
} |
71 |
|
|
80 |
|
|
81 |
if (nitems != 2) |
if (nitems != 2) |
82 |
{ |
{ |
83 |
fprintf (stderr, "%s:%s:%d Bad syntax\n", |
error (0, 0, "%s:%d Bad syntax", index_file_name, line); |
|
program_invocation_name, index_file_name, line); |
|
84 |
continue; |
continue; |
85 |
} |
} |
86 |
|
|
87 |
root = file_name_lookup (name, 0, 0); |
root = file_name_lookup (name, 0, 0); |
88 |
if (!root) |
if (root == MACH_PORT_NULL) |
89 |
{ |
{ |
90 |
fprintf (stderr, "%s:%s:%d Filesystem `%s': %s\n", |
error (0, errno, "%s:%d Filesystem `%s'", |
91 |
program_invocation_name, index_file_name, line, |
index_file_name, line, name); |
|
name, strerror (errno)); |
|
92 |
free (name); |
free (name); |
93 |
continue; |
continue; |
94 |
} |
} |
120 |
{ |
{ |
121 |
file_t newindex; |
file_t newindex; |
122 |
FILE *f; |
FILE *f; |
123 |
|
error_t err; |
124 |
int i; |
int i; |
125 |
|
|
126 |
if (!index_file_name) |
if (!index_file_name) |
131 |
index_file_dir = file_name_split (index_file_name, &index_file_compname); |
index_file_dir = file_name_split (index_file_name, &index_file_compname); |
132 |
if (index_file_dir == MACH_PORT_NULL) |
if (index_file_dir == MACH_PORT_NULL) |
133 |
{ |
{ |
134 |
fprintf (stderr, "%s: `%s': %s\n", |
error (0, errno, "`%s'", index_file_name); |
|
program_invocation_name, index_file_name, strerror (errno)); |
|
135 |
index_file_name = 0; |
index_file_name = 0; |
136 |
return; |
return; |
137 |
} |
} |
138 |
} |
} |
139 |
|
|
140 |
/* Create an anonymous file in the same directory */ |
/* Create an anonymous file in the same directory */ |
141 |
errno = dir_mkfile (index_file_dir, O_WRONLY, 0666, &newindex); |
err = dir_mkfile (index_file_dir, O_WRONLY, 0666, &newindex); |
142 |
if (errno) |
if (err) |
143 |
{ |
{ |
144 |
fprintf (stderr, "%s: `%s': %s\n", |
error (0, err, "`%s'", index_file_name); |
|
program_invocation_name, index_file_name, strerror (errno)); |
|
145 |
index_file_name = 0; |
index_file_name = 0; |
146 |
mach_port_deallocate (mach_task_self (), index_file_dir); |
mach_port_deallocate (mach_task_self (), index_file_dir); |
147 |
index_file_dir = MACH_PORT_NULL; |
index_file_dir = MACH_PORT_NULL; |
155 |
fprintf (f, "%d %s\n", i, fsystable[i].name); |
fprintf (f, "%d %s\n", i, fsystable[i].name); |
156 |
|
|
157 |
/* Link it in */ |
/* Link it in */ |
158 |
errno = dir_link (index_file_dir, newindex, index_file_compname, 0); |
err = dir_link (index_file_dir, newindex, index_file_compname, 0); |
159 |
if (errno) |
if (err) |
160 |
fprintf (stderr, "%s: `%s': %s\n", |
error (0, err, "`%s'", index_file_name); |
|
program_invocation_name, index_file_name, strerror (errno)); |
|
161 |
fflush (f); |
fflush (f); |
162 |
file_sync (newindex, 1, 0); |
file_sync (newindex, 1, 0); |
163 |
fclose (f); |
fclose (f); |