00001
00002 #include <sxpath.h>
00003 #include <stdio.h>
00004 #include <sys/types.h>
00005 #include <sys/stat.h>
00006 #include <fcntl.h>
00007 #include <unistd.h>
00008 #include <dirent.h>
00009 #include <string.h>
00010 #include <search.h>
00011
00012 #include "xpsh_def.h"
00013
00014 SXP_Node getNextAttrNS_i( SXP_Node );
00015 SXP_Node getAttributeNo_i( SXP_Node node, int n );
00016 SXP_Node getPreviousAttrNS_i( SXP_Node node );
00017
00018 void set_canread( node_xpsh*, struct stat*, char* );
00019 void set_hidden( node_xpsh*, struct stat*, char* );
00020 void set_name( node_xpsh*, struct stat*, char* );
00021 void set_size( node_xpsh*, struct stat*, char* );
00022 void set_regular( node_xpsh*, struct stat*, char* );
00023 void set_mime( node_xpsh*, struct stat*, char* );
00024 void set_dev( node_xpsh*, struct stat*, char* );
00025 void set_ino( node_xpsh*, struct stat*, char* );
00026 void set_nlink( node_xpsh*, struct stat*, char* );
00027 void set_uid( node_xpsh*, struct stat*, char* );
00028 void set_gid( node_xpsh*, struct stat*, char* );
00029 void set_blksize( node_xpsh*, struct stat*, char* );
00030 void set_blocks( node_xpsh*, struct stat*, char* );
00031 void set_atime( node_xpsh*, struct stat*, char* );
00032 void set_ctime( node_xpsh*, struct stat*, char* );
00033 void set_mtime( node_xpsh*, struct stat*, char* );
00034 void set_mode( node_xpsh*, struct stat*, char* );
00035 void set_sticky( node_xpsh*, struct stat*, char* );
00036 void set_rdev( node_xpsh*, struct stat*, char* );
00037 void set_blockdev( node_xpsh*, struct stat*, char* );
00038 void set_chardev( node_xpsh*, struct stat*, char* );
00039 void set_fifo( node_xpsh*, struct stat*, char* );
00040 void set_socket( node_xpsh*, struct stat*, char* );
00041 void set_target( node_xpsh*, struct stat*, char* );
00042
00043 typedef struct attr_order_i attr_order;
00046 struct attr_order_i
00047 {
00049 char *name;
00051 void (*set_fct)();
00052 };
00053
00054 node_xpsh *getFileDirAttributeNo( node_xpsh*, int, attr_order* );
00055
00056 static attr_order file_attr_order[] = {
00057 { "name", &set_name },
00058 { "mode", &set_mode },
00059 { "uid", &set_uid },
00060 { "gid", &set_gid },
00061 { "mime", &set_mime },
00062 { "size", &set_size },
00063 { "canread", &set_canread },
00064 { "hidden", &set_hidden },
00065 { "mtime", &set_mtime },
00066 { "atime", &set_atime },
00067 { "ctime", &set_ctime },
00068 { "regular", &set_regular },
00069 { "blockdev", &set_blockdev },
00070 { "chardev", &set_chardev },
00071 { "fifo", &set_fifo },
00072 { "socket", &set_socket },
00073 { "nlink", &set_nlink },
00074 { "dev", &set_dev },
00075 { "ino", &set_ino },
00076 { "blksize", &set_blksize },
00077 { "blocks", &set_blocks },
00078 { "rdev", &set_rdev }
00079 };
00080
00081 static attr_order symlink_attr_order[] = {
00082 { "name", &set_name },
00083 { "target", &set_target },
00084 { "mode", &set_mode },
00085 { "uid", &set_uid },
00086 { "gid", &set_gid },
00087 { "canread", &set_canread },
00088 { "hidden", &set_hidden },
00089 { "mtime", &set_mtime },
00090 { "atime", &set_atime },
00091 { "ctime", &set_ctime },
00092 { "nlink", &set_nlink },
00093 { "dev", &set_dev },
00094 { "ino", &set_ino },
00095 { "blksize", &set_blksize },
00096 { "blocks", &set_blocks }
00097 };
00098
00099 static attr_order dir_attr_order[] = {
00100 { "name", &set_name },
00101 { "mode", &set_mode },
00102 { "uid", &set_uid },
00103 { "gid", &set_gid },
00104 { "sticky", &set_sticky },
00105 { "canread", &set_canread },
00106 { "hidden", &set_hidden },
00107 { "mtime", &set_mtime },
00108 { "atime", &set_atime },
00109 { "ctime", &set_ctime },
00110 { "nlink", &set_nlink },
00111 { "dev", &set_dev },
00112 { "ino", &set_ino },
00113 { "blksize", &set_blksize },
00114 { "blocks", &set_blocks }
00115 };
00116
00117
00118
00119