char buf[BUFSIZ];
char type[5], creator[5];
char *u, *p;
+ int fd;
+ int afpmaster = 0;
+ int i;
struct passwd *pw;
struct vol_option save_options[VOLOPT_NUM];
struct vol_option options[VOLOPT_NUM];
- int i;
struct stat st;
- int fd;
+
+ if (! ((DSI *)obj->handle)->child)
+ afpmaster = 1;
if (!p1->name)
return -1;
strcpy(tmp, path);
if (!pwent && obj->username)
pwent = getpwnam(obj->username);
- volxlate(obj, path, sizeof(path) - 1, tmp, pwent, NULL, NULL);
+
+ if (! afpmaster)
+ strcpy(tmp, path);
+ else
+ volxlate(obj, path, sizeof(path) - 1, tmp, pwent, NULL, NULL);
/* this is sort of braindead. basically, i want to be
* able to specify things in any order, but i don't want to
options[VOLOPT_FLAGS].i_value |= AFPVOL_RO;
/* do variable substitution for volname */
- volxlate(obj, tmp, sizeof(tmp) - 1, volname, pwent, path, NULL);
+ if (!afpmaster)
+ strcpy(volname, tmp);
+ else
+ volxlate(obj, tmp, sizeof(tmp) - 1, volname, pwent, path, NULL);
+
creatvol(obj, pwent, path, tmp, options, p2 != NULL);
}
volfree(options, save_options);
free_volumes();
}
+ if (! ((DSI *)obj->handle)->child) {
+ LOG(log_debug, logtype_afpd, "load_volumes: AFP MASTER");
+ } else {
+ LOG(log_debug, logtype_afpd, "load_volumes: user: %s", obj->username);
+ }
+
pwent = getpwnam(obj->username);
if ( (obj->options.flags & OPTION_USERVOLFIRST) == 0 ) {
readvolfile(obj, &obj->options.systemvol, NULL, 0, pwent);
if ( obj->options.flags & OPTION_USERVOLFIRST ) {
readvolfile(obj, &obj->options.systemvol, NULL, 0, pwent );
}
-
+
if ( obj->options.closevol ) {
struct vol *vol;
{
return Volumes;
}
+
+void unload_volumes_and_extmap(void)
+{
+ LOG(log_debug, logtype_afpd, "unload_volumes_and_extmap");
+ free_extmap();
+ free_volumes();
+}