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 ATALK_UNIX_H 16 #define ATALK_UNIX_H 17 18 #ifdef HAVE_CONFIG_H 19 #include <config.h> 20 #endif 21 22 #include <sys/stat.h> 23 #include <sys/types.h> 24 #include <dirent.h> 25 26 #include <atalk/globals.h> 27 28 #define NETATALK_DIOSZ_STACK 65536 29 #define NETATALK_DIOSZ_HEAP (1024*1024) 30 31 struct vol; 32 33 /* vfs/unix.c */ 34 extern int netatalk_unlink(const char *name); 35 extern int netatalk_unlinkat(int dirfd, const char *name); 36 extern int statat(int dirfd, const char *path, struct stat *st); 37 extern DIR *opendirat(int dirfd, const char *path); 38 39 /* rmdir ENOENT not an error */ 40 extern int netatalk_rmdir(int dirfd, const char *name); 41 extern int netatalk_rmdir_all_errors(int dirfd, const char *name); 42 43 extern int setfilmode(const struct vol *vol, const char *name, mode_t mode, struct stat *st); 44 extern int dir_rx_set(mode_t mode); 45 extern int unix_rename(int sfd, const char *oldpath, int dfd, const char *newpath); 46 extern int copy_file(int sfd, const char *src, const char *dst, mode_t mode); 47 extern int copy_file_fd(int sfd, int dfd); 48 extern int copy_ea(const char *ea, int sfd, const char *src, const char *dst, mode_t mode); 49 50 extern void become_root(void); 51 extern void unbecome_root(void); 52 extern int gmem(gid_t gid, int ngroups, gid_t *groups); 53 extern int set_groups(AFPObj *obj, struct passwd *pwd); 54 extern const char *print_groups(int ngroups, gid_t *groups); 55 #endif /* ATALK_UNIX_H */ 56