#include <atalk/netatalk_conf.h>
#include <atalk/unix.h>
#include <atalk/bstrlib.h>
+#include <atalk/bstradd.h>
#include <atalk/errchk.h>
#include "volume.h"
bstring dtpath = bfromcstr(vol->v_dbpath);
bcatcstr(dtpath, "/" APPLEDESKTOP);
- EC_NEG1( chdir(bdata(dtpath)) );
+ EC_NEG1( chdir(cfrombstr(dtpath)) );
if (( desk = opendir( "." )) == NULL ) {
if ( chdir( wd ) < 0 ) {
}
if (S_ISDIR(st.st_mode)) {
- if ( chmod_acl( modbuf, (DIRBITS | mode)) < 0 && errno != EPERM ) {
+ if (ochmod(modbuf,
+ DIRBITS | mode,
+ &st,
+ vol_syml_opt(vol) | vol_chmod_opt(vol)
+ ) < 0 && errno != EPERM) {
LOG(log_error, logtype_afpd, "setdeskmode: chmod %s: %s",fullpathname(modbuf), strerror(errno) );
}
- } else if ( chmod_acl( modbuf, mode & ~EXEC_MODE ) < 0 && errno != EPERM ) {
+ } else if (ochmod(modbuf,
+ mode & ~EXEC_MODE,
+ &st,
+ vol_syml_opt(vol) | vol_chmod_opt(vol)
+ ) < 0 && errno != EPERM) {
LOG(log_error, logtype_afpd, "setdeskmode: chmod %s: %s",fullpathname(modbuf), strerror(errno) );
}
}
closedir( sub );
/* XXX: need to preserve special modes */
- if ( chmod_acl( deskp->d_name, (DIRBITS | mode)) < 0 && errno != EPERM ) {
+ if (ochmod(deskp->d_name,
+ DIRBITS | mode,
+ NULL,
+ vol_syml_opt(vol) | vol_chmod_opt(vol)
+ ) < 0 && errno != EPERM) {
LOG(log_error, logtype_afpd, "setdeskmode: chmod %s: %s",fullpathname(deskp->d_name), strerror(errno) );
}
}
EC_FAIL;
}
/* XXX: need to preserve special modes */
- if ( chmod_acl(bdata(dtpath), (DIRBITS | mode)) < 0 && errno != EPERM ) {
+ if (ochmod(bdata(dtpath),
+ DIRBITS | mode,
+ NULL,
+ vol_syml_opt(vol) | vol_chmod_opt(vol)
+ ) < 0 && errno != EPERM) {
LOG(log_error, logtype_afpd, "setdeskmode: chmod %s: %s", bdata(dtpath), strerror(errno));
}
bstring dtpath = bfromcstr(vol->v_dbpath);
bcatcstr(dtpath, "/" APPLEDESKTOP);
- EC_NEG1( chdir(bdata(dtpath)) );
+ EC_NEG1( chdir(cfrombstr(dtpath)) );
if (( desk = opendir( "." )) == NULL ) {
if ( chdir( wd ) < 0 ) {
LOG(log_error, logtype_afpd, "setdeskowner: chdir %s: %s", wd, strerror(errno) );
EC_FAIL;
}
- if (chown(bdata(dtpath), uid, gid ) < 0 && errno != EPERM ) {
+ if (chown(cfrombstr(dtpath), uid, gid ) < 0 && errno != EPERM ) {
LOG(log_error, logtype_afpd, "setdeskowner: chown %s: %s", fullpathname(".AppleDouble"), strerror(errno) );
}
dtpath = bfromcstr(vol->v_dbpath);
bcatcstr(dtpath, "/" APPLEDESKTOP);
- if (lstat(bdata(dtpath), &st) != 0) {
+ if (lstat(cfrombstr(dtpath), &st) != 0) {
become_root();
- if (lstat(bdata(olddtpath), &st) == 0) {
+ if (lstat(cfrombstr(olddtpath), &st) == 0) {
cmd_argv[0] = "mv";
cmd_argv[1] = bdata(olddtpath);
cmd_argv[2] = bdata(dtpath);
if (run_cmd("mv", cmd_argv) != 0) {
LOG(log_error, logtype_afpd, "moving .AppleDesktop from \"%s\" to \"%s\" failed",
bdata(olddtpath), bdata(dtpath));
- mkdir(bdata(dtpath), 0777);
+ mkdir(cfrombstr(dtpath), 0777);
}
} else {
- mkdir(bdata(dtpath), 0777);
+ mkdir(cfrombstr(dtpath), 0777);
}
unbecome_root();
}
isadir = path_isadir(path);
- if (isadir || !(of = of_findname(path))) {
+ if (isadir || !(of = of_findname(vol, path))) {
ad_init(&ad, vol);
adp = &ad;
} else
upath = path->u_name;
isadir = path_isadir(path);
- if (isadir || !(of = of_findname(path))) {
+ if (isadir || !(of = of_findname(vol, path))) {
ad_init(&ad, vol);
adp = &ad;
} else
}
isadir = path_isadir(path);
- if (isadir || !(of = of_findname(path))) {
+ if (isadir || !(of = of_findname(vol, path))) {
ad_init(&ad, vol);
adp = &ad;
} else