netatalk  4.6.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
nad.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2009,2011 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#include <arpa/inet.h>
19#include <signal.h>
20#include <stdio.h>
21#include <sys/stat.h>
22#include <sys/types.h>
23
24#include <atalk/globals.h>
25#include <atalk/cnid.h>
26#include <atalk/compat.h>
27#include <atalk/volume.h>
28
29#define DIR_DOT_OR_DOTDOT(a) \
30 ((strcmp(a, ".") == 0) || (strcmp(a, "..") == 0))
31
32#define ADVOL_V2_OR_EA(ad) ((ad) == AD_VERSION2 || (ad) == AD_VERSION_EA)
33
34#define NAD_INFO(...) \
35 do { \
36 printf(__VA_ARGS__); \
37 putchar('\n'); \
38 } while (0)
39
40#define NAD_DEBUG(...) \
41 do { \
42 if (nad_log_verbose) { \
43 fprintf(stderr, __VA_ARGS__); \
44 } \
45 } while (0)
46
47#define NAD_FATAL(...) \
48 do { \
49 NAD_INFO(__VA_ARGS__); \
50 exit(1); \
51 } while (0)
52
53typedef struct {
54 struct vol *vol;
56 bool owns_cdb;
57} afpvol_t;
58
59extern int nad_log_verbose;
60extern int forceflag;
61extern volatile sig_atomic_t alarmed;
62extern void set_signal(void);
63
64extern int nad_ls(int argc, char **argv, AFPObj *obj);
65extern int nad_cp(int argc, char **argv, AFPObj *obj);
66extern int nad_rm(int argc, char **argv, AFPObj *obj);
67extern int nad_mv(int argc, char **argv, AFPObj *obj);
68extern int nad_set(int argc, char **argv, AFPObj *obj);
69extern int nad_find(int argc, char **argv, AFPObj *obj);
70extern int nad_mkdir(int argc, char **argv, AFPObj *obj);
71extern int nad_rmdir(int argc, char **argv, AFPObj *obj);
72extern int nad_archive(int argc, char **argv, AFPObj *obj);
73#ifdef HAVE_STUFFIT
74extern int nad_stuffit(int argc, char **argv, AFPObj *obj);
75#endif
76
77/* ad_util.c */
78extern int openvol(AFPObj *obj, const char *path, afpvol_t *vol);
79extern int openvol_optional(AFPObj *obj, const char *path, afpvol_t *vol);
80extern void nad_not_inside_volume(FILE *out, const char *path, int force_hint);
81extern void closevol(afpvol_t *vol);
82extern cnid_t cnid_for_paths_parent(const afpvol_t *vol, const char *path,
83 cnid_t *did);
84extern void nad_report_cnid_reset(const char *volpath);
85extern char *utompath(const struct vol *, const char *);
86extern int convert_dots_encoding(const afpvol_t *svol, const afpvol_t *dvol,
87 char *path);
88
89typedef struct {
90 char *p_end;
91 char *target_end;
92 char p_path[MAXPATHLEN + 2];
93} PATH_T;
94
95extern int fflag, iflag, lflag, nflag, pflag, vflag;
96
97#endif /* AD_H */
#define ADEDLEN_PRIVSYN
Definition adouble.h:113
uint32_t cnid_t
Definition adouble.h:157
volatile sig_atomic_t alarmed
Definition cmd_dbd.c:40
int nad_archive(int argc, char **argv, AFPObj *obj)
Definition megatron.c:603
#define utompath(s)
Definition megatron.h:103
int forceflag
Definition nad_util.c:76
int vflag
Definition nad.h:95
int openvol(AFPObj *obj, const char *path, afpvol_t *vol)
Load volinfo and initialize struct vol.
Definition nad_util.c:223
int nad_ls(int argc, char **argv, AFPObj *obj)
Definition nad_ls.c:811
int convert_dots_encoding(const afpvol_t *svol, const afpvol_t *dvol, char *path)
Convert dot encoding of basename in place.
Definition nad_util.c:262
int pflag
Definition nad.h:95
void nad_not_inside_volume(FILE *out, const char *path, int force_hint)
Definition nad_util.c:79
int nflag
Definition nad.h:95
int nad_mkdir(int argc, char **argv, AFPObj *obj)
int lflag
Definition nad.h:95
int nad_rm(int argc, char **argv, AFPObj *obj)
void closevol(afpvol_t *vol)
Definition nad_util.c:238
int nad_cp(int argc, char **argv, AFPObj *obj)
void nad_report_cnid_reset(const char *volpath)
Report a CNID table reset behind a failed resolve.
Definition nad_util.c:308
cnid_t cnid_for_paths_parent(const afpvol_t *vol, const char *path, cnid_t *did)
Resolves CNID of a given paths parent directory.
Definition nad_util.c:336
int fflag
Definition nad_cp.c:89
int nad_rmdir(int argc, char **argv, AFPObj *obj)
int openvol_optional(AFPObj *obj, const char *path, afpvol_t *vol)
Open an AFP volume, or return a stub for non-AFP paths.
Definition nad_util.c:161
int nad_set(int argc, char **argv, AFPObj *obj)
Definition nad_set.c:314
void set_signal(void)
Definition nad_util.c:96
int iflag
Definition nad.h:95
int nad_mv(int argc, char **argv, AFPObj *obj)
int nad_log_verbose
Definition nad_util.c:75
int nad_find(int argc, char **argv, AFPObj *obj)
Definition nad_find.c:210
cnid_t did
Definition nad_cp.c:92
int nad_stuffit(int argc, char **argv, AFPObj *obj)
Definition nad_stuffit.c:726
Definition globals.h:190
Definition nad.h:89
char * p_end
Definition nad.h:90
char * target_end
Definition nad.h:91
char p_path[MAXPATHLEN+2]
Definition nad.h:92
Definition nad.h:53
char db_stamp[ADEDLEN_PRIVSYN]
Definition nad.h:55
struct vol * vol
Definition nad.h:54
bool owns_cdb
Definition nad.h:56
Definition include/atalk/directory.h:140
Definition include/atalk/volume.h:33