/*
- $Id: acls.c,v 1.8 2010-02-10 14:05:37 franklahm Exp $
+ $Id: acls.c,v 1.9 2010-03-08 19:49:59 franklahm Exp $
Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com>
This program is free software; you can redistribute it and/or modify
uuid_t uuid;
int dir, r_ok, w_ok, x_ok;
+ if ( ! (AFPobj->options.flags & OPTION_UUID))
+ return;
+
+ LOG(log_maxdebug, logtype_afpd, "acltoownermode('%s')", path);
+
if ((pw = getpwuid(uid)) == NULL) {
LOG(log_error, logtype_afpd, "acltoownermode: %s", strerror(errno));
return;
/*
- * $Id: afp_dsi.c,v 1.51 2010-02-16 02:37:38 didg Exp $
+ * $Id: afp_dsi.c,v 1.52 2010-03-08 19:49:59 franklahm Exp $
*
* Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
* Copyright (c) 1990,1993 Regents of The University of Michigan.
#define CHILD_SLEEPING (1 << 2)
#define CHILD_DATA (1 << 3)
+/*
+ * We generally pass this from afp_over_dsi to all afp_* funcs, so it should already be
+ * available everywhere. Unfortunately some funcs (eg acltoownermode) need acces to it
+ * but are deeply nested in the function chain with the caller already without acces to it.
+ * Changing this would require adding a reference to the caller which itself might be
+ * called in many places (eg acltoownermode is called from accessmode).
+ * The only sane way out is providing a copy of it here:
+ */
+AFPObj *AFPobj = NULL;
+
static struct {
AFPObj *obj;
unsigned char flags;
u_int8_t function;
struct sigaction action;
+ AFPobj = obj;
obj->exit = afp_dsi_die;
obj->reply = (int (*)()) dsi_cmdreply;
obj->attention = (int (*)(void *, AFPUserBytes)) dsi_attention;
/*
- * $Id: globals.h,v 1.31 2010-01-18 12:55:28 franklahm Exp $
+ * $Id: globals.h,v 1.32 2010-03-08 19:49:59 franklahm Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
/* typedef for AFP functions handlers */
typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
+/* afp_dsi.c */
+extern AFPObj *AFPobj;
+
extern int afp_version;
extern int afp_errno;
extern unsigned char nologin;