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