1/* 2 Copyright (c) 2009 Frank Lahm <franklahm@gmail.com> 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13*/ 14 15#ifndef AD_H 16#define AD_H 17 18#if !defined(__FreeBSD__) 19# define _XOPEN_SOURCE 600 20#endif 21 22#include <sys/types.h> 23#include <sys/stat.h> 24#include <signal.h> 25 26#include <atalk/ftw.h> 27#include <atalk/volinfo.h> 28#include <atalk/cnid.h> 29 30#define DIR_DOT_OR_DOTDOT(a) \ 31 ((strcmp(a, ".") == 0) || (strcmp(a, "..") == 0)) 32 33#ifndef TIMESPEC_TO_TIMEVAL 34#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ 35 (tv)->tv_sec = (ts)->tv_sec; \ 36 (tv)->tv_usec = (ts)->tv_nsec / 1000; \ 37 } 38#endif 39 40enum logtype {STD, DBG}; 41 42#define SLOG(...) \ 43 _log(STD, __VA_ARGS__) 44 45#define ERROR(...) \ 46 do { \ 47 _log(STD, __VA_ARGS__); \ 48 exit(1); \ 49 } while (0) 50 51typedef struct { 52 struct volinfo volinfo; 53 struct vol volume; 54 char db_stamp[ADEDLEN_PRIVSYN]; 55} afpvol_t; 56 57extern int log_verbose; /* Logging flag */ 58extern void _log(enum logtype lt, char *fmt, ...); 59 60extern int ad_ls(int argc, char **argv); 61extern int ad_cp(int argc, char **argv); 62extern int ad_rm(int argc, char **argv); 63extern int ad_mv(int argc, char **argv); 64extern int ad_find(int argc, char **argv); 65 66/* ad_util.c */ 67extern int openvol(const char *path, afpvol_t *vol); 68extern void closevol(afpvol_t *vol); 69extern cnid_t cnid_for_path(const afpvol_t *vol, const char *path, cnid_t *did); 70extern cnid_t cnid_for_paths_parent(const afpvol_t *vol, const char *path, cnid_t *did); 71extern char *utompath(const struct volinfo *volinfo, const char *upath); 72extern int convert_dots_encoding(const afpvol_t *svol, const afpvol_t *dvol, char *path, size_t buflen); 73 74typedef struct { 75 char *p_end;/* pointer to NULL at end of path */ 76 char *target_end;/* pointer to end of target base */ 77 char p_path[MAXPATHLEN + 2];/* pointer to the start of a path */ 78} PATH_T; 79 80extern PATH_T to; 81extern int fflag, iflag, lflag, nflag, pflag, vflag; 82 83#endif /* AD_H */ 84