]> arthur.barton.de Git - netatalk.git/blobdiff - bin/ad/ad.h
Merge branch 'v3-cleanup' into tmp/v3.0.4-alex
[netatalk.git] / bin / ad / ad.h
index e47c384aec0af68d5e97a667a0da920565ca64d6..3195641f7cb291c78e66d580a4d3a047f9d53997 100644 (file)
@@ -1,5 +1,5 @@
 /* 
-   Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
+   Copyright (c) 2009,2011 Frank Lahm <franklahm@gmail.com>
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #ifndef AD_H
 #define AD_H
 
-#define _XOPEN_SOURCE 600
+#include <atalk/standards.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
+#include <arpa/inet.h>
 
+#include <atalk/globals.h>
 #include <atalk/ftw.h>
-#include <atalk/volinfo.h>
-
-#define STRCMP(a,b,c) (strcmp(a,c) b 0)
+#include <atalk/cnid.h>
+#include <atalk/compat.h>
+#include <atalk/volume.h>
 
 #define DIR_DOT_OR_DOTDOT(a) \
         ((strcmp(a, ".") == 0) || (strcmp(a, "..") == 0))
 
+#ifndef TIMESPEC_TO_TIMEVAL
+#define TIMESPEC_TO_TIMEVAL(tv, ts) { \
+    (tv)->tv_sec = (ts)->tv_sec; \
+    (tv)->tv_usec = (ts)->tv_nsec / 1000; \
+    }
+#endif
+
+#define ADVOL_V2_OR_EA(ad) ((ad) == AD_VERSION2 || (ad) == AD_VERSION_EA)
+
 enum logtype {STD, DBG};
 
 #define SLOG(...)                             \
@@ -41,47 +52,35 @@ enum logtype {STD, DBG};
     } while (0)
 
 typedef struct {
-    struct volinfo volinfo;
-//    char *basename;
+    struct vol     *vol;
+    char           db_stamp[ADEDLEN_PRIVSYN];
 } afpvol_t;
 
 extern int log_verbose;             /* Logging flag */
 extern void _log(enum logtype lt, char *fmt, ...);
 
-extern struct volinfo svolinfo, dvolinfo;
-extern struct vol svolume, dvolume;
-
-extern int ad_ls(int argc, char **argv);
-extern int ad_cp(int argc, char **argv);
+extern int ad_ls(int argc, char **argv, AFPObj *obj);
+extern int ad_cp(int argc, char **argv, AFPObj *obj);
+extern int ad_rm(int argc, char **argv, AFPObj *obj);
+extern int ad_mv(int argc, char **argv, AFPObj *obj);
+extern int ad_set(int argc, char **argv, AFPObj *obj);
+extern int ad_find(int argc, char **argv, AFPObj *obj);
 
 /* ad_util.c */
-extern int newvol(const char *path, afpvol_t *vol);
-extern void freevol(afpvol_t *vol);
-extern cnid_t cnid_for_path(const struct volinfo *vi, const struct vol *vol, const char *path);
-extern char *utompath(const struct volinfo *volinfo, char *upath);
-
-struct FTWELEM {
-    const struct FTW  *ftw;
-    const char        *ftw_path;
-    int               ftw_base_off;
-    int               ftw_tflag;
-    const struct stat *ftw_statp;
-};
+extern int openvol(AFPObj *obj, const char *path, afpvol_t *vol);
+extern void closevol(afpvol_t *vol);
+extern cnid_t cnid_for_path(const afpvol_t *vol, const char *path, cnid_t *did);
+extern cnid_t cnid_for_paths_parent(const afpvol_t *vol, const char *path, cnid_t *did);
+extern char *utompath(const struct vol *, const char *);
+extern int convert_dots_encoding(const afpvol_t *svol, const afpvol_t *dvol, char *path, size_t buflen);
 
 typedef struct {
     char *p_end;/* pointer to NULL at end of path */
     char *target_end;/* pointer to end of target base */
-    char p_path[PATH_MAX];/* pointer to the start of a path */
+    char p_path[MAXPATHLEN + 2];/* pointer to the start of a path */
 } PATH_T;
 
 extern PATH_T to;
 extern int fflag, iflag, lflag, nflag, pflag, vflag;
-extern volatile sig_atomic_t info;
-
-extern int ftw_copy_file(const struct FTW *, const char *, const struct stat *, int);
-extern int copy_link(const struct FTW *, const char *, const struct stat *, int);
-extern int setfile(const struct stat *, int);
-extern int preserve_dir_acls(const struct stat *, char *, char *);
-extern int preserve_fd_acls(int, int);
 
 #endif /* AD_H */