mars-nwe/include/connect.h
2011-11-13 17:37:22 +01:00

291 lines
9.8 KiB
C
Raw Blame History

/* connect.h 04-Apr-00 */
#ifndef _CONNECT_H_
#define _CONNECT_H_
typedef struct {
uint8 path[256]; /* directory */
uint8 fn[256]; /* file */
int volume; /* Volume Number */
int has_wild; /* fn has wildcards */
} NW_PATH;
typedef struct {
uint8 name[14]; /* filename in DOS format */
uint8 attrib[2]; /* LO-HI attrib, ext_attrib */
uint8 size[4]; /* size of file */
uint8 create_date[2];
uint8 acces_date[2];
uint8 modify_date[2];
uint8 modify_time[2];
} NW_FILE_INFO;
typedef struct {
uint8 name[14]; /* dirname */
uint8 attrib[2]; /* LO-HI attrib, ext_attrib */
uint8 create_date[2];
uint8 create_time[2];
uint8 owner_id[4];
uint8 access_right_mask;
uint8 reserved; /* future use */
uint8 next_search[2];
} NW_DIR_INFO;
typedef struct {
uint8 time[2];
uint8 date[2];
uint8 id[4];
} NW_FILE_DATES_INFO;
typedef struct {
uint8 subdir[4];
uint8 attributes[4]; /* 0x20,0,0,0 LO-HI */
uint8 uniqueid; /* 0 */
uint8 flags; /* 0x18 */
uint8 namespace; /* 0 */
uint8 namlen;
uint8 name[12];
NW_FILE_DATES_INFO created;
NW_FILE_DATES_INFO archived;
NW_FILE_DATES_INFO updated;
uint8 size[4];
uint8 reserved_1[44];
uint8 inherited_rights_mask[2];
uint8 last_access_date[2];
uint8 reserved_2[28];
} NW_DOS_FILE_INFO;
typedef struct {
uint8 subdir[4];
uint8 attributes[4]; /* 0x10,0,0,0 LO-HI */
uint8 uniqueid; /* 0 */
uint8 flags; /* 0x14 or 0x1c */
uint8 namespace; /* 0 */
uint8 namlen;
uint8 name[12];
NW_FILE_DATES_INFO created;
NW_FILE_DATES_INFO archived;
uint8 modify_time[2];
uint8 modify_date[2];
uint8 next_trustee[4];
uint8 reserved_1[48];
uint8 max_space[4];
uint8 inherited_rights_mask[2];
uint8 reserved_2[26];
} NW_DOS_DIR_INFO;
typedef struct {
uint8 searchsequence[4];
union {
NW_DOS_DIR_INFO d;
NW_DOS_FILE_INFO f;
} u;
} NW_SCAN_DIR_INFO;
typedef struct {
uint8 searchsequence[4]; /* same as NW_SCAN_DIR_INFO */
uint8 change_bits[4]; /* LO-HI, 2=Attributes */
union {
NW_DOS_DIR_INFO d;
NW_DOS_FILE_INFO f;
} u;
} NW_SET_DIR_INFO;
extern int use_mmap;
extern int tells_server_version;
extern int server_version_flags;
extern int max_burst_send_size;
extern int max_burst_recv_size;
extern int default_uid;
extern int default_gid;
extern int nw_init_connect(void);
extern void nw_exit_connect(void);
extern int nw_free_handles(int task);
extern int nw_creat_open_file(int dir_handle, uint8 *data, int len,
NW_FILE_INFO *info, int attrib, int access, int mode, int task);
extern int nw_delete_files(int dir_handle, int searchattrib, uint8 *data, int len);
extern int nw_set_file_information(int dir_handle, uint8 *data, int len,
int searchattrib, NW_FILE_INFO *f);
extern int nw_set_file_attributes(int dir_handle, uint8 *data, int len,
int attrib, int newattrib);
extern int nw_mv_files(int searchattrib,
int sourcedirhandle, uint8 *sourcedata, int qlen,
int zdirhandle, uint8 *destdata, int destdatalen);
extern int mv_dir(int dir_handle, uint8 *sourcedata, int qlen,
uint8 *destdata, int destdatalen);
extern int nw_unlink_node(int volume, uint8 *unname, struct stat *stb);
extern int nw_creat_node(int volume, uint8 *unname, int mode);
extern int nw_utime_node(int volume, uint8 *unname, struct stat *stb,
time_t t);
extern int nw_mk_rd_dir(int dir_handle, uint8 *data, int len, int mode);
extern int nw_search(uint8 *info, uint32 *fileowner,
int dirhandle, int searchsequence,
int search_attrib, uint8 *data, int len);
extern int nw_dir_get_vol_path(int dirhandle, uint8 *path);
extern int nw_dir_search(uint8 *info,
int dirhandle, int searchsequence,
int search_attrib, uint8 *data, int len);
extern int nw_find_dir_handle( int dir_handle,
uint8 *data, /* zus<75>tzlicher Pfad */
int len); /* L<>nge Pfad */
extern int xinsert_new_dir(int volume, uint8 *path,
int dev, int inode,
int drive, int is_temp, int task);
extern int nw_alloc_dir_handle(
int dir_handle, /* directory handle */
uint8 *data, /* extra path */
int len, /* len of datat */
int driveletter, /* A .. Z normal */
int is_temphandle, /* temp Handle 1 */
/* spez. temp Handle 2 */
int task, /* Prozess Task */
int *eff_rights);
extern int nw_open_dir_handle( int dir_handle,
uint8 *data, /* extra path */
int len, /* len data */
int *volume, /* Volume */
int *dir_id, /* similar to filehandle*/
int *searchsequence);
extern int nw_free_dir_handle(int dir_handle, int task);
extern int alter_dir_handle(int targetdir, int volume, uint8 *path,
int dev, int inode, int task);
extern int nw_set_dir_handle(int targetdir, int dir_handle,
uint8 *data, int len, int task);
extern int nw_get_directory_path(int dir_handle, uint8 *name, int size_name);
extern int nw_get_vol_number(int dir_handle);
extern int nw_get_eff_dir_rights(int dir_handle, uint8 *data, int len,
int modus);
extern int nw_scan_dir_info(int dir_handle, uint8 *data, int len,
uint8 *subnr, uint8 *subname,
uint8 *subdatetime, uint8 *owner);
extern void get_dos_file_attrib(NW_DOS_FILE_INFO *f,
struct stat *stb,
int volume,
uint8 *path,
char *unixname);
void get_dos_dir_attrib(NW_DOS_DIR_INFO *f,
struct stat *stb,
int volume,
uint8 *path,
char *unixname);
#define MAX_NW_DIRS 255
extern int act_uid;
extern int act_gid;
extern int act_obj_id; /* not login == 0 */
extern int act_id_flags; /* &1 == supervisor equivalence !!! */
extern int entry8_flags; /* special flags, see examples nw.ini, entry 8 */
extern int entry31_flags; /* special flags, see examples nw.ini, entry 31 */
extern int conn_get_full_path(int dirhandle, uint8 *data, int len,
uint8 *fullpath, int size_fullpath);
extern int conn_get_kpl_unxname(char *unixname,
int size_unixname,
int dirhandle,
uint8 *data, int len);
extern void set_default_guid(void);
extern void set_guid(int gid, int uid);
extern void reset_guid(void);
extern void reseteuid(void);
extern int in_act_groups(gid_t gid);
extern int get_unix_access_rights(struct stat *stb, uint8 *unixname);
extern int get_unix_eff_rights(struct stat *stb);
extern void set_nw_user(int gid, int uid,
int id_flags,
uint32 obj_id, uint8 *objname,
int unxloginlen, uint8 *unxloginname,
int grpcount, uint32 *grps);
extern uint32 get_file_owner(struct stat *stb);
extern int nw_scan_a_directory(uint8 *rdata,
int dirhandle,
uint8 *data,
int len,
int searchattrib,
uint32 searchbeg); /* 32 bit */
extern int nw_scan_a_root_dir(uint8 *rdata,
int dirhandle);
extern int nw_set_a_directory_entry(int dirhandle,
uint8 *data,
int len,
int searchattrib,
uint32 searchbeg,
NW_SET_DIR_INFO *f);
extern int fn_dos_match(uint8 *s, uint8 *p, int options);
extern void un_date_2_nw(time_t time, uint8 *d, int high_low);
extern time_t nw_2_un_time(uint8 *d, uint8 *t);
extern void un_time_2_nw(time_t time, uint8 *d, int high_low);
extern void mangle_dos_name(NW_VOL *vol, uint8 *unixname, uint8 *pp);
extern int nw_add_trustee(int dir_handle, uint8 *data, int len,
uint32 id, int trustee, int extended);
extern int nw_del_trustee(int dir_handle, uint8 *data, int len,
uint32 id, int extended);
extern int nw_set_dir_info(int dir_handle, uint8 *data, int len,
uint32 owner_id, int max_rights,
uint8 *creationdate, uint8 *creationtime);
extern int nw_scan_user_trustee(int volume, int *sequence, uint32 id,
int *access_mask, uint8 *path);
extern int nw_scan_for_trustee( int dir_handle,
int sequence,
uint8 *path,
int len,
int max_entries,
uint32 *ids,
int *trustees,
int extended);
extern int nw_log_file(int lock_flag,
int timeout,
int dir_handle,
int len,
char *data);
#endif