minor fixes
[ira/wip.git] / source / include / smb.h
index 4a9a6ccd3bb9ad9c874795daf8d229f924e123ee..4168e34d3f69aa703e29d8c7aa5f45f843f2953c 100644 (file)
@@ -6,6 +6,7 @@
    Copyright (C) John H Terpstra              1996-2000
    Copyright (C) Luke Kenneth Casson Leighton 1996-2000
    Copyright (C) Paul Ashton                  1998-2000
+   Copyright (C) Simo Sorce                   2001-2002
    Copyright (C) Martin Pool                 2002
    
    This program is free software; you can redistribute it and/or modify
@@ -157,59 +158,7 @@ implemented */
 
 
 
-#ifndef _PSTRING
-
-#define PSTRING_LEN 1024
-#define FSTRING_LEN 256
-
-#ifdef PSTRING_SANCTIFY
-
-/* If you define this, pstring and fstring become distinguished types,
- * so that it's harder to accidentally overflow them by for example
- * passing an fstring on the lhs of pstrcpy.
- *
- * The types are defined as one-element union arrays so that with
- * "fstring f" the name "f" will be a pointer and with a big hammer
- * you can cast it to (char *).  So code that tries to just use it
- * directly will get a loud warning, but hopefully nothing worse.
- *
- * To pass them to non-pstring-aware functions, use PSTR and check
- * that the function takes a const.  They should almost never be
- * modified except by special calls.  In those unusual cases, use
- * PSTR_MUTABLE.
- *
- * This is off by default so as not to produce too many warnings.  As
- * the code is vetted it can become the default. */
-
-typedef union { char pstring_contents[PSTRING_LEN]; } pstring[1];
-typedef union { char fstring_contents[FSTRING_LEN]; } fstring[1];
-
-#  define PSTR(p) ((const char *) ((p)->pstring_contents))
-#  define FSTR(f) ((const char *) ((f)->fstring_contents))
-
-/* You should not normally use these.  Instead, use pstrcpy, etc. */
-#  define PSTR_MUTABLE(p) ((p)->pstring_contents)
-#  define FSTR_MUTABLE(f) ((f)->fstring_contents)
-
-/* See also safe_string.h */
-
-#else /* ndef PSTRING_SANCTIFY */
-
-/* Old interface. */
-
-typedef char pstring[PSTRING_LEN];
-typedef char fstring[FSTRING_LEN];
-
-#define PSTR(p) (p)
-#define FSTR(f) (f)
-#define PSTR_MUTABLE(p) (p)
-#define FSTR_MUTABLE(f) (f)
-
-#endif /* ndef PSTRING_SANCTIFY */
-
-#define _PSTRING
-
-#endif /* ndef _PSTRING */
+#include "pstring.h"
 
 
 
@@ -438,10 +387,8 @@ typedef struct write_cache
 
 typedef struct
 {
-       smb_ucs2_t *path;
-       smb_ucs2_t *name;
-       smb_ucs2_t *unixname;
-       smb_ucs2_t *dosname;
+       smb_ucs2_t *origname;
+       smb_ucs2_t *filename;
        SMB_STRUCT_STAT *statinfo;
 } smb_filename;
 
@@ -664,7 +611,11 @@ typedef struct {
                
 typedef struct sam_passwd
 {
-       struct {
+       TALLOC_CTX *mem_ctx;
+       
+       void (*free_fn)(struct sam_passwd **);
+
+       struct user_data {
                /* initiailization flags */
                uint32 init_flag;
                
@@ -675,18 +626,18 @@ typedef struct sam_passwd
                time_t pass_can_change_time;  /* password can change time */
                time_t pass_must_change_time; /* password must change time */
                
-               pstring username;     /* UNIX username string */
-               pstring domain;       /* Windows Domain name */
-               pstring nt_username;  /* Windows username string */
-               pstring full_name;    /* user's full name string */
-               pstring home_dir;     /* home directory string */
-               pstring dir_drive;    /* home directory drive string */
-               pstring logon_script; /* logon script string */
-               pstring profile_path; /* profile path string */
-               pstring acct_desc  ;  /* user description string */
-               pstring workstations; /* login from workstations string */
-               pstring unknown_str ; /* don't know what this is, yet. */
-               pstring munged_dial ; /* munged path name and dial-back tel number */
+               char * username;     /* UNIX username string */
+               char * domain;       /* Windows Domain name */
+               char * nt_username;  /* Windows username string */
+               char * full_name;    /* user's full name string */
+               char * home_dir;     /* home directory string */
+               char * dir_drive;    /* home directory drive string */
+               char * logon_script; /* logon script string */
+               char * profile_path; /* profile path string */
+               char * acct_desc  ;  /* user description string */
+               char * workstations; /* login from workstations string */
+               char * unknown_str ; /* don't know what this is, yet. */
+               char * munged_dial ; /* munged path name and dial-back tel number */
                
                uid_t uid;          /* this is a unix uid_t */
                gid_t gid;          /* this is a unix gid_t */
@@ -1666,6 +1617,8 @@ typedef struct user_struct
        gid_t gid; /* gid of a validated user */
 
        userdom_struct user;
+       char *homedir;
+       
        BOOL guest;
 
        /* following groups stuff added by ih */
@@ -1675,10 +1628,19 @@ typedef struct user_struct
 
        NT_USER_TOKEN *nt_user_token;
 
+       uint8 session_key[16];
+
        int session_id; /* used by utmp and pam session code */
 } user_struct;
 
 
+struct unix_error_map {
+       int unix_error;
+       int dos_class;
+       int dos_code;
+       NTSTATUS nt_error;
+};
+
 #include "ntdomain.h"
 
 #include "client.h"