|
Lines 9-14
Link Here
|
| 9 |
#include <stdio.h> |
9 |
#include <stdio.h> |
| 10 |
#include <string.h> |
10 |
#include <string.h> |
| 11 |
#include <sys/stat.h> |
11 |
#include <sys/stat.h> |
|
|
12 |
#include <dirent.h> |
| 12 |
#include "mntent.h" |
13 |
#include "mntent.h" |
| 13 |
#include "fstab.h" |
14 |
#include "fstab.h" |
| 14 |
#include "sundries.h" |
15 |
#include "sundries.h" |
|
Lines 173-198
Link Here
|
| 173 |
read_mntentchn(mfp, fnam, mc); |
174 |
read_mntentchn(mfp, fnam, mc); |
| 174 |
} |
175 |
} |
| 175 |
|
176 |
|
| 176 |
static void |
177 |
static int |
| 177 |
read_fstab() { |
178 |
read_fstab_file(const char *fnam, struct mntentchn *mc){ |
| 178 |
mntFILE *mfp = NULL; |
|
|
| 179 |
const char *fnam; |
| 180 |
struct mntentchn *mc = &fstab; |
| 181 |
|
| 182 |
got_fstab = 1; |
| 183 |
mc->nxt = mc->prev = NULL; |
| 184 |
|
179 |
|
| 185 |
fnam = _PATH_FSTAB; |
180 |
mntFILE *mfp = NULL; |
|
|
181 |
|
| 186 |
mfp = my_setmntent (fnam, "r"); |
182 |
mfp = my_setmntent (fnam, "r"); |
|
|
183 |
|
| 187 |
if (mfp == NULL || mfp->mntent_fp == NULL) { |
184 |
if (mfp == NULL || mfp->mntent_fp == NULL) { |
| 188 |
int errsv = errno; |
185 |
int errsv = errno; |
| 189 |
error(_("warning: can't open %s: %s"), |
186 |
error(_("warning: can't open %s: %s"), |
| 190 |
_PATH_FSTAB, strerror (errsv)); |
187 |
fnam, strerror (errsv)); |
| 191 |
return; |
188 |
return 0; |
| 192 |
} |
189 |
} |
| 193 |
read_mntentchn(mfp, fnam, mc); |
190 |
read_mntentchn(mfp, fnam, mc); |
|
|
191 |
return 1; |
| 192 |
|
| 193 |
} |
| 194 |
|
| 195 |
static void |
| 196 |
read_fstab() { |
| 197 |
|
| 198 |
struct stat st; |
| 199 |
char *dir_path; |
| 200 |
DIR *dir; |
| 201 |
struct dirent *entry; |
| 202 |
char entry_path[PATH_MAX + 1]; |
| 203 |
size_t path_len; |
| 204 |
struct mntentchn *mc = &fstab; |
| 205 |
|
| 206 |
mc->nxt = mc->prev = NULL; |
| 207 |
got_fstab = 1; |
| 208 |
|
| 209 |
if(!read_fstab_file(_PATH_FSTAB,mc)) return; |
| 210 |
|
| 211 |
dir_path = _PATH_FSTAB ".d/"; |
| 212 |
strncpy (entry_path, dir_path, sizeof (entry_path)); |
| 213 |
dir = opendir (dir_path); |
| 214 |
path_len = strlen (dir_path); |
| 215 |
|
| 216 |
while((entry=readdir(dir))!=NULL) { |
| 217 |
|
| 218 |
strncpy (entry_path + path_len, entry->d_name, |
| 219 |
sizeof (entry_path) - path_len); |
| 220 |
lstat (entry_path, &st); |
| 221 |
if (S_ISREG (st.st_mode)) |
| 222 |
read_fstab_file(entry_path,mc); |
| 223 |
|
| 224 |
|
| 225 |
} |
| 226 |
closedir(dir); |
| 194 |
} |
227 |
} |
| 195 |
|
228 |
|
| 196 |
|
229 |
|
| 197 |
/* Given the name NAME, try to find it in mtab. */ |
230 |
/* Given the name NAME, try to find it in mtab. */ |
| 198 |
struct mntentchn * |
231 |
struct mntentchn * |