]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
This commit was generated by cvs2svn to compensate for changes in r545,
authorSam Hartman <hartmans@debian.org>
Wed, 11 Dec 2002 02:46:26 +0000 (02:46 +0000)
committerSam Hartman <hartmans@debian.org>
Wed, 11 Dec 2002 02:46:26 +0000 (02:46 +0000)
which included commits to RCS files with non-trunk default branches.

81 files changed:
README
acconfig.h
acinclude.m4
configure-libafs.in
src/WINNT/afsapplib/NTMakefile
src/WINNT/afsd/cm_config.c
src/WINNT/afsd/cm_conn.c
src/WINNT/afsd/smb.c
src/WINNT/afsd/smb3.c
src/WINNT/client_config/NTMakefile
src/WINNT/client_creds/NTMakefile
src/WINNT/client_creds/shortcut.cpp
src/WINNT/client_exp/afs_shl_ext.cpp
src/WINNT/client_exp/gui2fs.cpp
src/WINNT/client_exp/gui2fs.h
src/WINNT/client_exp/lang/en_US/afs_shl_ext.rc
src/WINNT/client_exp/lang/es_ES/afs_shl_ext.rc
src/WINNT/client_exp/lang/ja_JP/afs_shl_ext.rc
src/WINNT/client_exp/lang/ko_KR/afs_shl_ext.rc
src/WINNT/client_exp/lang/pt_BR/afs_shl_ext.rc
src/WINNT/client_exp/lang/zh_CN/afs_shl_ext.rc
src/WINNT/client_exp/lang/zh_TW/afs_shl_ext.rc
src/WINNT/client_exp/resource.h
src/WINNT/client_exp/shell_ext.cpp
src/WINNT/client_exp/shell_ext.h
src/WINNT/eventlog/lang/NTMakefile
src/WINNT/install/InstallShield5/NTMakefile
src/afs/HPUX/osi_machdep.h
src/afs/HPUX/osi_vnodeops.c
src/afs/LINUX/osi_groups.c
src/afs/LINUX/osi_prototypes.h
src/afs/LINUX/osi_vfs.hin
src/afs/SOLARIS/osi_file.c
src/afs/SOLARIS/osi_vnodeops.c
src/afs/UKERNEL/afs_usrops.c
src/afs/VNOPS/afs_vnop_create.c
src/afs/afs_dynroot.c
src/afs/afs_init.c
src/afs/afs_nfsdisp.c
src/afs/afs_prototypes.h
src/afs/afs_trace.et
src/afs/afs_util.c
src/afs/afs_vcache.c
src/afs/sysincludes.h
src/afsd/afsd.c
src/cf/linux-test4.m4
src/config/Makefile.hp_ux110.in
src/config/NTMakefile.i386_nt40
src/config/NTMakefile.i386_win95
src/config/NTMakefile.version-NOCML
src/config/param.hp_ux110.h
src/config/util_cr.c
src/des/read_pssword.c
src/libafs/MakefileProto.HPUX.in
src/libafs/MakefileProto.SOLARIS.in
src/libafsrpc/Makefile.in
src/libafsrpc/NTMakefile
src/rx/HPUX/rx_kmutex.h
src/rx/Makefile.in
src/rx/rx_kcommon.c
src/rx/rx_kcommon.h
src/rx/rx_kernel.h
src/rx/xdr.h
src/rx/xdr_rx.c
src/rxkad/Makefile.in
src/rxkad/NTMakefile
src/rxkad/rxkad.p.h
src/rxkad/rxkad_server.c
src/rxkad/test/Makefile.in
src/rxkad/test/stress.c
src/rxkad/test/stress_c.c
src/rxkad/test/stress_internal.h
src/rxkad/test/stress_s.c
src/shlibafsauthent/mapfile
src/shlibafsrpc/Makefile.in
src/util/afs_lhash.c
src/viced/callback.c
src/viced/host.c
src/vol/fssync.c
src/vol/ihandle.c
src/vol/volume.c

diff --git a/README b/README
index c99bbe2037bc51b7abfb9e7ed1f4fc4952d26658..c3bf7103e024db23604316a185c5b1d16a7f174e 100644 (file)
--- a/README
+++ b/README
@@ -31,28 +31,28 @@ A. Creating the proper directory structure.
       into with this name when you build.
 
       alpha_dux40
-      alpha_dux50 (only tested on 5.0A)
-      i386_fbsd42 (gmake is required to build for FreeBSD)     
+      alpha_dux50 (only tested on 5.0A, does not work with 5.1)
+      i386_fbsd42, i386_fbsd43, i386_fbsd44, i386_fbsd45,
+             i386_fbsd46 (gmake is required to build for FreeBSD)
       i386_linux22
       i386_linux24 
       rs_aix42
       sgi_65 (file server not tested)
-      sun4x_56
-      sun4x_57
-      sun4x_58
-      sun4x_59
-      ppc_darwin_13
+      sun4_413 (No client support, no fileserver support, db servers only)
+      sun4x_56, sun4x_57, sun4x_58, sun4x_59 (logging UFS not supported 
+             for mixed-use partitions containing client cache)
+      ppc_darwin_13, ppc_darwin_14, ppc_darwin_60 (file server not tested)
       ppc_linux22
       ppc_linux24
-      alpha_linux22
-      alpha_linux24
+      alpha_linux22 
+      alpha_linux24 
       ia64_linux24
       sparc_linux22
       sparc_linux24
       sparc64_linux22
       sparc64_linux24
-      hp_ux110 (No client support, but db servers and utilities work)
-      hp_ux102 (No client support, but db servers and utilities work)
+      hp_ux110 (See notes below for information on getting missing header)
+      hp_ux102 (Client port possible, but db servers and utilities work)
 
    2. Using configure in the top level directory, configure for your
       AFS system type, providing the necessary flags:
@@ -136,3 +136,11 @@ C  Problems
    Mailing lists have been set up to help; More details can be found
    on the openafs.org site.
 
+D Notes
+   HP-UX 11.0 requires a header called vfs_vm.h which HP has provided on their
+   web site: http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,687,00.html
+   To navigate down from the top level of the portal, one would do
+
+        www.hp.com/dspp -> i want to... -> download software -> operating systems
+
+   to get to the same page. 
index cbac0c04c1f10f97a60e9a52050498b666878344..6244b45a98dd0a7efa9a105a6739e2759dbeb8dc 100644 (file)
@@ -36,6 +36,9 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
 #undef STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
 #undef STRUCT_INODE_HAS_I_DEVICES
 #undef EXPORTED_TASKLIST_LOCK
+#undef EXPORTED_SYS_CALL_TABLE
+#undef EXPORTED_KALLSYMS_SYMBOL
+#undef EXPORTED_KALLSYMS_ADDRESS
 #undef COMPLETION_H_EXISTS
 #undef ssize_t
 
index 3edbf24d519c22bb32f32c6d9a4a5cbf795744d2..5f0f7436351e101fc6cf39ab8fd442c9f85c3721 100644 (file)
@@ -81,7 +81,7 @@ case $system in
         *-linux*)
                MKAFS_OSTYPE=LINUX
                if test "x$enable_redhat_buildsys" = "xyes"; then
-                AC_DEFINE(ENABLE_REDHAT_BUILDSYS)
+                AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
                fi
                if test "x$enable_kernel_module" = "xyes"; then
                 if test "x$with_linux_kernel_headers" != "x"; then
@@ -130,6 +130,12 @@ case $system in
                        OMIT_FRAME_POINTER=-fomit-frame-pointer
                 fi
                 AC_SUBST(OMIT_FRAME_POINTER)
+                OPENAFS_GCC_SUPPORTS_MARCH
+                AC_SUBST(P5PLUS_KOPTS)
+                OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
+                OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
+                OPENAFS_GCC_SUPPORTS_NO_COMMON
+                AC_SUBST(LINUX_GCC_KOPTS)
                 ifdef([OPENAFS_CONFIGURE_LIBAFS],
                   [LINUX_BUILD_VNODE_FROM_INODE(config,afs)],
                   [LINUX_BUILD_VNODE_FROM_INODE(src/config,src/afs/LINUX)]
@@ -144,29 +150,62 @@ case $system in
                 LINUX_EXPORTS_TASKLIST_LOCK
                 LINUX_NEED_RHCONFIG
                 LINUX_WHICH_MODULES
+                 if test "x$ac_cv_linux_config_modversions" = "xno"; then
+                   AC_MSG_WARN([Cannot determine sys_call_table status. assuming it's exported])
+                   ac_cv_linux_exports_sys_call_table=yes
+                 else
+                   LINUX_EXPORTS_SYS_CALL_TABLE
+                   LINUX_EXPORTS_KALLSYMS_SYMBOL
+                   LINUX_EXPORTS_KALLSYMS_ADDRESS
+                   LINUX_EXPORTS_INIT_MM
+                   if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
+                         linux_syscall_method=none
+                         if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
+                            linux_syscall_method=scan
+                            if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
+                               linux_syscall_method=scan_with_kallsyms_address
+                            fi
+                         fi
+                         if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
+                            linux_syscall_method=kallsyms_symbol
+                         fi
+                         if test "x$linux_syscall_method" = "xnone"; then
+                        AC_MSG_ERROR([no available sys_call_table access method])
+                         fi
+                   fi
+                 fi
                 if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
-                 AC_DEFINE(EXPORTED_TASKLIST_LOCK)
+                 AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if your linux kernel exports tasklist_lock])
                 fi
+                 if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
+                  AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
+                 fi
+                 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
+                  AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL)
+                 fi
+                 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
+                  AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS)
+                 fi
                 if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
-                 AC_DEFINE(COMPLETION_H_EXISTS)
+                 AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if your h_exists exists])
                 fi
                 if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
-                 AC_DEFINE(INODE_SETATTR_NOT_VOID)
+                 AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
                 fi
                 if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then 
-                 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK)
+                 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
                 fi
                 if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then 
-                 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK)
+                 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
                 fi
                 if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then 
-                 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM)
+                 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
                 fi
                 if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then 
-                 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES)
+                 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
                 fi
                 if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then 
-                 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS)
+                 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if you struct inode has data_buffers])
                 fi
                 :
                fi
@@ -286,6 +325,9 @@ else
                powerpc-apple-darwin6.1*)
                        AFS_SYSNAME="ppc_darwin_60"
                        ;;
+               powerpc-apple-darwin6.2*)
+                       AFS_SYSNAME="ppc_darwin_60"
+                       ;;
                sparc-sun-solaris2.5*)
                        AFS_SYSNAME="sun4x_55"
                        ;;
@@ -385,7 +427,7 @@ AC_TRY_COMPILE( [#include <sys/types.h>
 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
 AC_MSG_RESULT($ac_cv_sockaddr_len)])
 if test "$ac_cv_sockaddr_len" = "yes"; then
-   AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN)
+   AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
 fi
 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
         echo Skipping library tests because they confuse Irix.
@@ -395,7 +437,7 @@ else
   if test "$ac_cv_func_socket" = no; then
     for lib in socket inet; do
         if test "$HAVE_SOCKET" != 1; then
-                AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
+                AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
         fi
     done
   fi
@@ -405,7 +447,7 @@ else
   if test "$ac_cv_func_connect" = no; then
     for lib in nsl; do
         if test "$HAVE_CONNECT" != 1; then
-                AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
+                AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
         fi
     done
   fi
@@ -414,7 +456,7 @@ else
   if test "$ac_cv_func_gethostbyname" = no; then
         for lib in dns nsl resolv; do
           if test "$HAVE_GETHOSTBYNAME" != 1; then
-            AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
+            AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
           fi
         done    
   fi    
@@ -423,7 +465,7 @@ else
   if test "$ac_cv_func_res_search" = no; then
         for lib in dns nsl resolv; do
           if test "$HAVE_RES_SEARCH" != 1; then
-            AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
+            AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH, 1, [define if you have res_search]))
           fi
         done    
        if test "$HAVE_RES_SEARCH" = 1; then
@@ -463,28 +505,28 @@ fi
 
 # Fast restart
 if test "$enable_fast_restart" = "yes"; then
-       AC_DEFINE(FAST_RESTART)
+       AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
 fi
 
 if test "$enable_bitmap_later" = "yes"; then
-       AC_DEFINE(BITMAP_LATER)
+       AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
 fi
 
 if test "$enable_full_vos_listvol_switch" = "yes"; then
-       AC_DEFINE(FULL_LISTVOL_SWITCH)
+       AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
 fi
 
 if test "$enable_bos_restricted_mode" = "yes"; then
-       AC_DEFINE(BOS_RESTRICTED_MODE)
+       AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
 fi
 
 if test "$enable_namei_fileserver" = "yes"; then
-       AC_DEFINE(AFS_NAMEI_ENV)
+       AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
 fi
 
 if test "$enable_afsdb" = "yes"; then
        LIB_AFSDB="$LIB_res_search"
-       AC_DEFINE(AFS_AFSDB_ENV)
+       AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
 fi
 
 dnl check for tivoli
@@ -523,6 +565,8 @@ AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
 AC_CHECK_FUNCS(setprogname getprogname sigaction)
 AC_CHECK_TYPE(ssize_t, int)
 
+AC_CHECK_FUNCS(timegm)
+
 dnl Directory PATH handling
 if test "x$enable_transarc_paths" = "xyes"  ; then 
     afsconfdir=${afsconfdir=/usr/afs/etc}
index 8180d4b05ac56e619989b25dd3e8948c54237710..ddcde4c1c7486be3a8e991c5cd0df212de5959e2 100644 (file)
@@ -1,5 +1,5 @@
 AC_INIT(Makefile.common)
-AM_INIT_AUTOMAKE(openafs-libafs,1.2.7)
+AM_INIT_AUTOMAKE(openafs-libafs,1.2.8)
 AC_CONFIG_HEADER(config/afsconfig.h)
 define(OPENAFS_CONFIGURE_LIBAFS)
 
index c19d740659447b2dbb04b6bc87cdad273f940ea6..44ef0a61f8cdccdcf08592df58d061e2381b52e3 100644 (file)
@@ -5,10 +5,6 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-# make compiler warnings fatal
-
-AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -WX
-
 # indicate that the functions in this library should be exported
 
 AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -DEXPORT_AFSAPPLIB -DEXPORTED=_declspec(dllexport)
index f09e9fcc6b46e9f8c8192243721d7867e6a6cf25..2501ff85ac4b54721d6a92e6e9680782ce7172f6 100644 (file)
@@ -241,8 +241,14 @@ long cm_SearchCellFile(char *cellNamep, char *newCellNamep,
                                return -4;
                        }
                         valuep++;      /* skip the "#" */
-
-                        valuep += strspn(valuep, "     "); /* skip SP & TAB */
+                        valuep += strspn(valuep, " \t"); /* skip SP & TAB */
+                        /* strip spaces and tabs in the end. They should not be there according to CellServDB format
+                        so do this just in case                        */
+                        while (valuep[strlen(valuep) - 1] == ' ' || valuep[strlen(valuep) - 1] == '\t') valuep[strlen(valuep) - 1] = '\0';
+
+                        /* strip spaces and tabs in the end. They should not be there according to CellServDB format
+                        so do this just in case                        */
+                        while (valuep[strlen(valuep) - 1] == ' ' || valuep[strlen(valuep) - 1] == '\t') valuep[strlen(valuep) - 1] = '\0';
 #endif /* !DJGPP */
                        if (inRightCell) {
 #if !defined(DJGPP) && !defined(AFS_WIN95_ENV)
index 0f7406032f534673c12673e460b5407efcba3f3f..3b326022e3c4942775cc74755394ece94fd4ae55 100644 (file)
@@ -63,9 +63,9 @@ long cm_GetServerList(struct cm_fid *fidp, struct cm_user *userp,
        struct cm_req *reqp, cm_serverRef_t **serverspp)
 {
        long code;
-        cm_volume_t *volp;
-        cm_serverRef_t *serversp;
-        cm_cell_t *cellp;
+        cm_volume_t *volp = NULL;
+        cm_serverRef_t *serversp = NULL;
+        cm_cell_t *cellp = NULL;
 
         if (!fidp) {
                *serverspp = NULL;
index e32a57d47772b145252c0d800e4974de457f690a..f740e00b5a4916f5e2888aeecde733058af50cb6 100644 (file)
@@ -3831,6 +3831,7 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
         smb_renameRock_t rock;
         cm_scache_t *oldDscp;
         cm_scache_t *newDscp;
+       cm_scache_t *tmpscp;
         char *oldLastNamep;
         char *newLastNamep;
         osi_hyper_t thyper;
@@ -3914,6 +3915,14 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
          */
        thyper.LowPart = 0;             /* search dir from here */
         thyper.HighPart = 0;
+       /* search for file to already exhist, if so return error*/
+
+       code = cm_Lookup(newDscp,newLastNamep,CM_FLAG_CHECKPATH,userp,&req,&tmpscp);
+       if((code != CM_ERROR_NOSUCHFILE) && (code != CM_ERROR_NOSUCHPATH) && (code != CM_ERROR_NOSUCHVOLUME) ) {
+           cm_ReleaseSCache(tmpscp);
+           return CM_ERROR_EXISTS; /* file exist, do not rename, also 
+                                      fixes move*/
+       }
         code = cm_ApplyDir(oldDscp, smb_RenameProc, &rock, &thyper, userp, &req, NULL);
 
         if (code == CM_ERROR_STOPNOW)
@@ -6050,6 +6059,22 @@ void smb_NetbiosInit()
     int len;
     int lana_found = 0;
 
+    /*******************************************************************/
+    /*      ms loopback adapter scan                                   */
+    /*******************************************************************/
+    struct
+    {
+       ADAPTER_STATUS status;
+       NAME_BUFFER    NameBuff [30];
+    }       Adapter;
+    
+    int j;
+    BOOL wla_found;
+
+    /*      AFAIK, this is the default for the ms loopback adapter.*/
+    unsigned char kWLA_MAC[6] = { 0x02, 0x00, 0x4c, 0x4f, 0x4f, 0x50 };
+    /*******************************************************************/
+
     /* setup the NCB system */
     ncbp = GetNCB();
 #ifdef DJGPP
@@ -6087,11 +6112,34 @@ void smb_NetbiosInit()
            sprintf(s, "Netbios NCBRESET lana %d error code %d", lana_list.lana[i], code);
            afsi_log(s);
            lana_list.lana[i] = 255;  /* invalid lana */
-        }
-        else {
+        } else {
             sprintf(s, "Netbios NCBRESET lana %d succeeded", lana_list.lana[i]);
             afsi_log(s);
-        }
+           /* check to see if this is the "Microsoft Loopback Adapter"        */
+           memset( ncbp, 0, sizeof (*ncbp) );
+           ncbp->ncb_command = NCBASTAT;
+           ncbp->ncb_lana_num = lana_list.lana[i];
+           strcpy( ncbp->ncb_callname,  "*               " );
+           ncbp->ncb_buffer = (char *) &Adapter;
+           ncbp->ncb_length = sizeof(Adapter);
+           code = Netbios( ncbp );
+           
+           if ( code == 0 ) {
+               wla_found = TRUE;
+               for (j=0; wla_found && (j<6); j++)
+                   wla_found = ( Adapter.status.adapter_address[j] == kWLA_MAC[j] );
+               
+               if ( wla_found ) {
+                   sprintf(s, "Windows Loopback Adapter detected lana %d", lana_list.lana[i]);
+                   afsi_log(s);
+                   
+                   /* select this lana; no need to continue */
+                   lana_list.length = 1;
+                   lana_list.lana[0] = lana_list.lana[i];
+                   break;
+               }
+           }
+       }
     }
 #else
     /* for DJGPP, there is no NCBENUM and NCBRESET is a real reset.  so
index ef4e7e2b8fff83bb8393de4eb004dcca6131cabc..0fa49bc845fcc67c6683c0bb05dfd908ff4161ca 100644 (file)
@@ -1448,7 +1448,10 @@ long smb_ReceiveTran2SetFileInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet
                /* prepare for setattr call */
                attr.mask = 0;
                lastMod = *((FILETIME *)(p->datap + 16));
-               if (LargeIntegerNotEqualToZero(*((LARGE_INTEGER *)&lastMod))) {
+               /* when called as result of move a b, lastMod is (-1, -1). If the check for -1 is not present, timestamp
+               of the resulting file will be 1969 (-1)
+                */
+               if (LargeIntegerNotEqualToZero(*((LARGE_INTEGER *)&lastMod)) && lastMod.dwLowDateTime != -1 && lastMod.dwHighDateTime != -1) {
                        attr.mask |= CM_ATTRMASK_CLIENTMODTIME;
                        smb_UnixTimeFromLargeSearchTime(&attr.clientModTime,
                                                        &lastMod);
@@ -4064,7 +4067,7 @@ long smb_ReceiveNTCancel(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
                         
                         osi_Log3(afsd_logp, "Cancelling change notification for fid %d wtree %d file %s", 
                                 fid, watchtree,
-                                osi_LogSaveString(afsd_logp, fidp->NTopen_wholepathp));
+                                                               osi_LogSaveString(afsd_logp, (fidp)?fidp->NTopen_wholepathp:""));
 
                        scp = fidp->scp;
                        lock_ObtainMutex(&scp->mx);
index fc20442dd7340ea67e8c5390e3e5e3c4bb3bab92..0d1d176101aeae23537f179f7b119fb06dbddb8d 100644 (file)
@@ -5,10 +5,6 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-# make compiler warnings fatal
-
-AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -WX
-
 # include the AFSD source tree on our inclusion path
 
 AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -I ..\afsd
index cd4d6a2d5b8d76a4a109a80f87423a4e86caefb1..98b1f4dadf6dd7a658b2fb1a43736ac9f8d14817 100644 (file)
@@ -5,12 +5,6 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-# make compiler warnings fatal
-
-AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -WX
-
-# include the AFSD source tree on our inclusion path
-
 AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -I ..\afsd
 
 # include the primary makefile
@@ -100,7 +94,7 @@ COPYSOURCES = \
 ############################################################################
 
 $(EXEFILE) : $(EXEOBJS) $(EXELIBS)
-       $(EXEGUILINK) $(VCLIBS)
+       $(EXEMFCLINK) $(VCLIBS)
        $(EXEPREP) 
 
 install : $(COPYSOURCES) $(COPYHEADERS) $(EXEFILE) lang
index ee66dd9a6c943aaec1ab012626ee6bd13a051e9d..b6c4adef7422d60d4182d948f9fdec1c6cb0db92 100644 (file)
@@ -16,6 +16,7 @@ extern "C" {
 #include <initguid.h>
 #include <windows.h>
 #include <windowsx.h>
+#undef INITGUID
 #include <shlobj.h>
 #include <shellapi.h>
 #include "shortcut.h"
index 7f41589c6436f8b12e8d198d3794401675cc490e..d0917b201b2e9a275bb1f3511b781ef55d52ca24 100644 (file)
@@ -80,7 +80,7 @@ STDAPI DllCanUnloadNow(void)
 {
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
 
-       if (!nCMRefCount && !nSERefCount)
+       if (!nCMRefCount && !nSERefCount && !nICRefCount && !nTPRefCount && !nXPRefCount)
                return S_OK;
 
        return S_FALSE;
@@ -89,7 +89,76 @@ STDAPI DllCanUnloadNow(void)
 // by exporting DllRegisterServer, you can use regsvr.exe
 STDAPI DllRegisterServer(void)
 {
+       int      i;
+       HKEY     hKey;
+       LRESULT  lResult;
+       DWORD    dwDisp;
+       TCHAR    szSubKey[MAX_PATH];
+       TCHAR    szCLSID[MAX_PATH];
+       TCHAR    szModule[MAX_PATH];
+       LPWSTR   pwsz;
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        COleObjectFactory::UpdateRegistryAll();
+       wsprintf(szSubKey, TEXT("%s\\%s"), STR_REG_PATH, STR_EXT_TITLE);
+       lResult = RegCreateKeyEx(  HKEY_LOCAL_MACHINE,
+                                                       szSubKey,
+                                                       0,
+                                                       NULL,
+                                                       REG_OPTION_NON_VOLATILE,
+                                                       KEY_WRITE,
+                                                       NULL,
+                                                       &hKey,
+                                                       &dwDisp);
+
+       if(NOERROR == lResult)
+       {
+       //Create the value string.
+               lResult = RegSetValueEx(   hKey,
+                                                               NULL,
+                                                               0,
+                                                               REG_SZ,
+                                                               (LPBYTE)szCLSID,
+                                                               (lstrlen(szCLSID) + 1) * sizeof(TCHAR));
+               RegCloseKey(hKey);
+       }
+       else
+               return SELFREG_E_CLASS;
+
+       //If running on NT, register the extension as approved.
+       OSVERSIONINFO  osvi;
+       osvi.dwOSVersionInfoSize = sizeof(osvi);
+       GetVersionEx(&osvi);
+       if(VER_PLATFORM_WIN32_NT == osvi.dwPlatformId)
+       {
+               lstrcpy( szSubKey, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"));
+
+               lResult = RegCreateKeyEx(  HKEY_LOCAL_MACHINE,
+                                                               szSubKey,
+                                                               0,
+                                                               NULL,
+                                                               REG_OPTION_NON_VOLATILE,
+                                                               KEY_WRITE,
+                                                               NULL,
+                                                               &hKey,
+                                                               &dwDisp);
+
+               if(NOERROR == lResult)
+               {
+                       TCHAR szData[MAX_PATH];
+
+               //Create the value string.
+                       lstrcpy(szData, STR_EXT_TITLE);
+
+                       lResult = RegSetValueEx(   hKey,
+                                                                       szCLSID,
+                                                                       0,
+                                                                       REG_SZ,
+                                                                       (LPBYTE)szData,
+                                                                       (lstrlen(szData) + 1) * sizeof(TCHAR));
+             
+                       RegCloseKey(hKey);
+               } else
+                       return SELFREG_E_CLASS;
+       }
        return S_OK;
 }
index cf769ddf6e238dbfe0044aeeadd4bc8fa35e8bb2..4b5283bd09fcc23ac6b5500a6591825b63e72c39 100644 (file)
@@ -1115,6 +1115,115 @@ defect #3069
        return TRUE;
 }
 
+/*
+*/
+long fs_ExtractDriveLetter(const char *inPathp, char *outPathp)
+{
+       if (inPathp[0] != 0 && inPathp[1] == ':') {
+               /* there is a drive letter */
+                *outPathp++ = *inPathp++;
+                *outPathp++ = *inPathp++;
+                *outPathp++ = 0;
+        }
+       else *outPathp = 0;
+
+        return 0;
+}
+
+/* strip the drive letter from a component */
+long fs_StripDriveLetter(const char *inPathp, char *outPathp, long outSize)
+{
+       char tempBuffer[1000];
+        strcpy(tempBuffer, inPathp);
+        if (tempBuffer[0] != 0 && tempBuffer[1] == ':') {
+               /* drive letter present */
+                strcpy(outPathp, tempBuffer+2);
+        }
+        else {
+               /* no drive letter present */
+               strcpy(outPathp, tempBuffer);
+       }
+        return 0;
+}
+
+
+BOOL RemoveSymlink(const char * linkName)
+{
+       BOOL error = FALSE;
+    INT code=0;
+    struct ViceIoctl blob;
+    char tbuffer[1024];
+    char lsbuffer[1024];
+       char tpbuffer[1024];
+    char *tp;
+    
+       tp = (char *) strrchr(linkName, '\\');
+       if (!tp)
+           tp = (char *) strrchr(linkName, '/');
+       if (tp) {
+           strncpy(tbuffer, linkName, code=tp-linkName+1);  /* the dir name */
+            tbuffer[code] = 0;
+           tp++;   /* skip the slash */
+       }
+       else {
+           fs_ExtractDriveLetter(linkName, tbuffer);
+           strcat(tbuffer, ".");
+         fs_StripDriveLetter(tp, tpbuffer, 0);
+                tp=tpbuffer;
+       }
+       blob.in = tp;
+       blob.in_size = strlen(tp)+1;
+       blob.out = lsbuffer;
+       blob.out_size = sizeof(lsbuffer);
+       code = pioctl(tbuffer, VIOC_LISTSYMLINK, &blob, 0);
+       if (code)
+               return FALSE;
+       blob.out_size = 0;
+       blob.in = tp;
+       blob.in_size = strlen(tp)+1;
+       return (pioctl(tbuffer, VIOC_DELSYMLINK, &blob, 0)==0);
+}
+
+BOOL IsSymlink(const char * true_name)
+{
+    char parent_dir[MAXSIZE];          /*Parent directory of true name*/
+       char strip_name[MAXSIZE];
+    struct ViceIoctl blob;
+       char *last_component;
+    int code;
+       last_component = (char *) strrchr(true_name, '\\');
+       if (!last_component)
+           last_component = (char *) strrchr(true_name, '/');
+       if (last_component) {
+           /*
+            * Found it.  Designate everything before it as the parent directory,
+            * everything after it as the final component.
+            */
+           strncpy(parent_dir, true_name, last_component - true_name + 1);
+           parent_dir[last_component - true_name + 1] = 0;
+           last_component++;   /*Skip the slash*/
+       }
+       else {
+           /*
+            * No slash appears in the given file name.  Set parent_dir to the current
+            * directory, and the last component as the given name.
+            */
+           fs_ExtractDriveLetter(true_name, parent_dir);
+           strcat(parent_dir, ".");
+           last_component = strip_name;
+        fs_StripDriveLetter(true_name, strip_name, sizeof(strip_name));
+       }
+
+       blob.in = last_component;
+       blob.in_size = strlen(last_component)+1;
+       blob.out_size = MAXSIZE;
+       blob.out = space;
+       memset(space, 0, MAXSIZE);
+       code = pioctl(parent_dir, VIOC_LISTSYMLINK, &blob, 1);
+       return (code==0);
+}
+
+
 /*
  * Delete AFS mount points.  Variables are used as follows:
  *       tbuffer: Set to point to the null-terminated directory name of the mount point
@@ -1461,7 +1570,7 @@ BOOL GetTokenInfo(CStringArray& tokenInfo)
        return TRUE;
 }
 
-BOOL IsPathInAfs(const CString& strPath)
+BOOL IsPathInAfs(const CHAR *strPath)
 {
     struct ViceIoctl blob;
     int code;
index 381abaa7130bb2f9a16988cd8a5911f8bd8fb2c2..cca21a271fd0a147e525561e414a2571c5efe6a9 100644 (file)
@@ -28,12 +28,16 @@ BOOL CopyACL(const CString& strToDir, const CStringArray& normal, const CStringA
 BOOL ListMount(CStringArray& files);
 BOOL MakeMount(const CString& strDir, const CString& strVolName, const CString& strCellName, BOOL bRW);
 BOOL RemoveMount(CStringArray& files);
+BOOL RemoveSymlink(const char *);
 BOOL GetVolumeInfo(CString strFile, CVolInfo& volInfo);
 BOOL SetVolInfo(CVolInfo& volInfo);
 enum WHICH_CELLS { LOCAL_CELL = 0, SPECIFIC_CELL = 1, ALL_CELLS = 2 };
 BOOL CheckServers(const CString& strCellName, WHICH_CELLS nCellsToCheck, BOOL bFast);
 BOOL GetTokenInfo(CStringArray& tokenInfo);
-BOOL IsPathInAfs(const CString& strPath);
+BOOL IsPathInAfs(const CHAR *strPath);
 int GetCellName(char *baseNamep, struct afsconf_cell *infop);
+long fs_StripDriveLetter(const char *inPathp, char *outPathp, long outSize);
+long fs_ExtractDriveLetter(const char *inPathp, char *outPathp);
+BOOL IsSymlink(const char * true_name);
 
 #endif //__GUI2FS_H__
index c67c2dfa2f738f27564768fbfc05da1e360b27fa..f2d3d08ecb6fa142a1ed1c8f42d9d5dcbe8dce2e 100644 (file)
@@ -105,6 +105,7 @@ BEGIN
     MENUITEM "Show &File Servers...",       IDM_SHOW_SERVER
     MENUITEM "Show &Cell...",               IDM_SHOWCELL
     MENUITEM "Show Server Status...",       IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
 END
 
 
@@ -629,6 +630,8 @@ BEGIN
     IDS_SHOW_FS_COLUMN      "File Server(s)"
     IDS_REMOVE_MP           "Remove Mount Points"
     IDS_REMOVE_MP_COLUMN    "Result"
+    IDS_REMOVE_SYMLINK_ITEM "&Remove Symbolic Link"
+    IDS_REALLY_REMOVE_SYMLINK "Are you sure you want to remove the selected Symbolic Link?"
 END
 
 #endif    // English (U.S.) resources
index 324b52aded22ef57b47eb973dfb123b07e01d247..f7ba1eca461a1fb055e039285628a558da24ac80 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// English (U.S.) resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 9, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE \r
-BEGIN\r
-    MENUITEM "Autentificación...",          IDM_AUTHENTICATION\r
-    MENUITEM "Listas de control de acceso...", IDM_ACL_SET\r
-    POPUP "Vo&lumen/Partición"\r
-    BEGIN\r
-        MENUITEM "&Propiedades...",             IDM_VOLUME_PROPERTIES\r
-        MENUITEM "&Actualizar nombre/mapa de ID", \r
-                                                IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "Punto de monta&je"\r
-    BEGIN\r
-        MENUITEM "&Mostrar...",                 IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "&Eliminar...",                IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "&Crear...",                   IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "&Descargar archivo/dir",      IDM_FLUSH\r
-    MENUITEM "Descargar vol&umen",          IDM_FLUSH_VOLUME\r
-    MENUITEM "Mostrar ser&vidores de archivo...", IDM_SHOW_SERVER\r
-    MENUITEM "Mostrar &célula...",          IDM_SHOWCELL\r
-    MENUITEM "Mostrar estado de servidor...", IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "Información de volumen"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,60,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Ayuda",9,240,150,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,150,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Archivo/directorio",IDC_STATIC,10,10,74,10\r
-    LTEXT           "Nombre",IDC_STATIC,90,10,71,8\r
-    LTEXT           "Cuota",IDC_STATIC,225,10,38,8\r
-    LTEXT           "Utilizado",IDC_STATIC,270,10,32,8\r
-    LTEXT           "%Utilizado",IDC_STATIC,305,10,34,8\r
-    LTEXT           "ID",IDC_STATIC,175,10,42,8\r
-    LTEXT           "Cuota nueva:",IDC_STATIC,10,127,46,10\r
-    EDITTEXT        IDC_NEW_QUOTA,58,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "Mostrar información de partición",IDC_PARTITION_INFO,\r
-                    205,125,112,14,WS_DISABLED\r
-    LTEXT           "KBytes",IDC_STATIC,128,127,25,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | \r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | \r
-                    WS_DISABLED,115,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Establecer ACL de AFS"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,51,12,259,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - Leer",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,52,55,10\r
-    CONTROL         "w - Grabar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,111,55,10\r
-    CONTROL         "l - Buscar",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,66,55,10\r
-    CONTROL         "d - Suprimir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,96,55,10\r
-    CONTROL         "i - Insertar",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,81,55,10\r
-    CONTROL         "k - Bloquear",IDC_LOCK,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,126,55,10\r
-    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,200,141,61,10\r
-    PUSHBUTTON      "Aña&dir...",IDC_ADD,270,45,45,14\r
-    PUSHBUTTON      "&Eliminar",IDC_REMOVE,270,70,45,14,WS_DISABLED\r
-    PUSHBUTTON      "&Borrar",IDC_CLEAN,270,95,45,14\r
-    DEFPUSHBUTTON   "&Aceptar",IDOK,270,150,45,14\r
-    PUSHBUTTON      "Ca&ncelar",IDCANCEL,270,175,45,14\r
-    PUSHBUTTON      "A&yuda",9,270,201,45,14\r
-    LTEXT           "Directorio:",IDC_STATIC,15,12,34,10\r
-    GROUPBOX        "Permisos",IDC_STATIC,195,41,71,115\r
-    LTEXT           "normales",IDC_STATIC,10,36,30,8\r
-    LTEXT           "Nombre",IDC_COLUMN_3,69,38,36,8\r
-    LTEXT           "Permisos",IDC_STATIC,10,28,37,8\r
-    LTEXT           "negativos",IDC_STATIC,9,132,38,8\r
-    LTEXT           "Permisos",IDC_STATIC,9,124,38,8\r
-    LTEXT           "Nombre",IDC_COLUMN_4,69,133,42,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "Co&piar...",IDC_COPY,270,120,45,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 223, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Crear punto de montaje"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,45,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,45,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,45,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,20,81,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "Ayuda",9,150,81,50,14\r
-    LTEXT           "Directorio:",IDC_STATIC,8,12,33,10\r
-    LTEXT           "Volumen:",IDC_STATIC,10,28,33,10\r
-    LTEXT           "Célula:",IDC_STATIC,18,42,25,10\r
-    GROUPBOX        "",IDC_STATIC,47,52,115,20\r
-    LTEXT           "Opciones:",IDC_STATIC,10,59,35,10\r
-    CONTROL         "Normales",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,51,59,41,10\r
-    CONTROL         "Leer/Grabar",IDC_RW,"Button",BS_AUTORADIOBUTTON,103,59,\r
-                    57,10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 250, 114\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Añadir entrada de ACL"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,48,70,190,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - Leer",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,15,45,10\r
-    CONTROL         "l - Buscar",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,25,50,10\r
-    CONTROL         "i - Insertar",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,35,50,10\r
-    CONTROL         "d - Suprimir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,45,50,10\r
-    CONTROL         "w - Grabar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,15,50,10\r
-    CONTROL         "k - Bloquear",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,25,55,10\r
-    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,80,35,60,10\r
-    CONTROL         "Entrada normal",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,69,10\r
-    CONTROL         "Entrada negativa",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,161,26,72,10\r
-    PUSHBUTTON      "Aceptar",IDOK,22,90,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,92,90,50,14\r
-    PUSHBUTTON      "Ayuda",9,162,90,50,14\r
-    LTEXT           "Nombre:",IDC_STATIC,10,72,32,8\r
-    GROUPBOX        "Permisos",IDC_STATIC,10,5,135,55\r
-    GROUPBOX        "Tipo de entrada",IDC_STATIC,155,6,84,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 152, 82\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Información de partición"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,61,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,61,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,61,40,40,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "Cerrar",IDOK,14,62,40,14\r
-    PUSHBUTTON      "Ayuda",9,69,62,40,14\r
-    LTEXT           "% Utilizado:",IDC_STATIC,19,42,38,8\r
-    LTEXT           "Bloques libres:",IDC_STATIC,10,27,47,8\r
-    LTEXT           "Tamaño total:",IDC_STATIC,12,12,46,8\r
-    LTEXT           "Kilobytes",IDC_STATIC,106,12,33,8\r
-    LTEXT           "Kilobytes",IDC_STATIC,105,27,37,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Copiar ACL"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Examinar",IDC_BROWSE,191,25,39,15\r
-    CONTROL         "Borrar entradas actuales:",IDC_CLEAR,"Button",\r
-                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,97,10\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "Ayuda",9,170,65,50,14\r
-    LTEXT           "Copiar desde:",IDC_STATIC,8,12,44,8\r
-    LTEXT           "Copiar a:",IDC_STATIC,22,29,30,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Dónde está"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ayuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Archivo/directorio",IDC_STATIC,10,10,111,8\r
-    LTEXT           "Servidor(es) de archivos",IDC_STATIC,128,10,130,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Resultados"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ayuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Archivo/directorio",-1,10,10,105,8\r
-    LTEXT           "Resultado",IDC_RESULTS_LABEL,128,10,148,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Puntos de montaje"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ayuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Archivo",IDC_STATIC,10,11,53,8\r
-    LTEXT           "Volumen",IDC_STATIC,75,11,66,8\r
-    LTEXT           "Célula",IDC_STATIC,155,11,63,8\r
-    LTEXT           "Tipo",IDC_STATIC,230,11,55,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Servidores no activos"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "Estos servidores siguen sin estar activos:",IDC_STATIC,\r
-                    10,10,182,8\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "Estado de servidor"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    CONTROL         "Célula local",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP | WS_TABSTOP,20,20,136,8\r
-    CONTROL         "Célula especificada:",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,136,10\r
-    CONTROL         "Todas las células",IDC_ALL_CELLS,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,65,135,10\r
-    CONTROL         "No investigar servidores",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,93,10\r
-    PUSHBUTTON      "Mostrar estado",IDC_SHOWSTATUS,10,120,54,14\r
-    GROUPBOX        "Célula",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,100,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Cerrar",IDCANCEL,67,120,48,14\r
-    PUSHBUTTON      "Ayuda",9,119,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Autentificación"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "Obtener señales",ID_GET_TOKENS,12,137,57,14\r
-    PUSHBUTTON      "Descartar señales",ID_DISCARD_TOKENS,79,137,62,14\r
-    PUSHBUTTON      "Cerrar",IDCANCEL,151,137,55,14\r
-    PUSHBUTTON      "Ayuda",9,217,137,55,14\r
-    LTEXT           "Nombre de usuario",IDC_STATIC,10,9,88,8\r
-    LTEXT           "Nombre de célula",IDC_STATIC,104,9,113,8\r
-    LTEXT           "Caducidad",IDC_STATIC,222,9,49,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 179, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "Obtener señales"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,54,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,53,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,53,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,20,70,35,14,WS_DISABLED\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,70,70,35,14\r
-    PUSHBUTTON      "Ayuda",9,120,70,35,14\r
-    LTEXT           "Nombre:",IDC_STATIC,21,12,29,8\r
-    LTEXT           "Contraseña:",IDC_STATIC,9,32,41,8\r
-    LTEXT           "Célula:",IDC_STATIC,25,52,24,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 192, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "Descartar señales"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Aceptar",IDOK,27,40,35,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,77,40,37,14\r
-    PUSHBUTTON      "Ayuda",9,129,40,35,14\r
-    LTEXT           "Célula:",IDC_STATIC,10,17,23,8\r
-    EDITTEXT        IDC_CELL_NAME,37,15,145,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Submontajes"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Añadir ",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "Suprimir",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "Cambiar",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "Submontajes:",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "Aceptar",IDOK,202,145,45,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 282, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Añadir submontaje"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,107,8,163,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,107,23,163,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Aceptar",IDOK,22,53,45,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,92,53,45,14\r
-    PUSHBUTTON      "Ayuda",9,167,53,45,14\r
-    LTEXT           "Nombre de compartición:",IDC_STATIC,18,10,87,8\r
-    LTEXT           "Nombre de vía de acceso:",IDC_STATIC,19,25,86,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_MAKE_MOUNT_POINT, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 222\r
-    END\r
-\r
-    IDD_ADD_ACL, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 235\r
-        BOTTOMMARGIN, 113\r
-    END\r
-\r
-    IDD_PARTITION_INFO, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 123\r
-    END\r
-\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 172\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 185\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 275\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "Iniciar o finalizar la sesión de AFS"\r
-    ID_SERVER_STATUS        "Comprobar servidores"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "No puede descargarse archivo activo %o"\r
-    IDS_FLUSH_ERROR         "Error al descargar archivo %o: %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_FLUSH_OK            "Archivo(s) seleccionado(s) descargado(s) satisfactoriamente"\r
-    IDS_CANT_GET_CELL       "Error al determinar célula:"\r
-    IDS_FLUSH_VOLUME_ERROR  "Error al descargar volumen para %o:  %s"\r
-    IDS_FLUSH_VOLUME_OK     "Volumen descargado satisfactoriamente"\r
-    IDS_WHERE_IS            "Archivo %o está en sistema principal %s"\r
-    IDS_CLEANACL_NOT_SUPPORTED \r
-                            "No puede limpiarse ACL para archivo %o:  borrado de Acl no soportado para listas de acceso de DFS"\r
-    IDS_ACL_IS_FINE         "Lista de acceso para %o correcta"\r
-    IDS_CLEANACL_INVALID_ARG \r
-                            "No puede limpiarse ACL para archivo %o: Argumento no válido, los posibles motivos incluyen: archivo no en servicio o demasiados usuarios de la lista de control de acceso. "\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "Se han eliminado entradas de ACL obsoletas."\r
-    ID_SUBMOUNTS            "Crear o eliminar un submontaje de AFS"\r
-    IDS_GETRIGHTS_ERROR     "No se ha podido leer lista de acceso para directorio %o:  %o"\r
-    IDS_DFSACL_ERROR        "No se han podido editar las ACL de DFS con este mandato"\r
-    IDS_SAVE_ACL_ERROR      "No se puede guardar ACL para %o:  %o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR \r
-                            "No se puede guardar ACL para %o: Argumento no válido, los posibles motivos incluyen: archivo no en AFS, demasiados usuarios en la lista de control de acceso, se ha intentado añadir un usuario no existente a la lista de control de acceso"\r
-    IDS_ACL_READ_ERROR      "No se puede leer ACL para %o:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "No puede copiarse ACL en dir %o: copiar ACL no soportado para listas de acceso de DFS"\r
-    IDS_COPY_ACL_EINVAL_ERROR \r
-                            "No se puede copiar ACL en dir %o: Argumento no válido, los posibles motivos incluyen: Archivo no en AFS."\r
-    IDS_COPY_ACL_ERROR      "No se puede copiar ACL en %o:  %o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%o no es un punto de montaje."\r
-    IDS_LIST_MOUNT_POINT_ERROR "Error:  %o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR \r
-                            "Deben crearse puntos de montaje en el sistema de archivos de AFS"\r
-    IDS_MOUNT_POINT_ERROR   "Error al crear punto de montaje:  %o"\r
-    IDS_ERROR               "Error:  %o"\r
-    IDS_DELETED             "Suprimido satisfactoriamente"\r
-    IDS_SET_QUOTA_ERROR     "Error al definir cuota:  %o"\r
-    ID_SUBMOUNTS_CREATE     "Crear un submontaje de AFS"\r
-    ID_SUBMOUNTS_EDIT       "Añadir, cambiar o suprimir submontajes de AFS"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "Error al comprobar el estado de máquinas de servidor de archivo:  %o"\r
-    IDS_ALL_SERVERS_RUNNING "Se están ejecutando todos los servidores."\r
-    IDS_CHECK_VOLUMES_OK    "Se están comprobando todas las correlaciones de ID de volumen/nombre."\r
-    IDS_CHECK_VOLUMES_ERROR "Error al comprobar las correlaciones de ID de volumen/nombre:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE \r
-                            "El nombre elegido ya se está utilizando. Por favor, entre un nombre diferente."\r
-    IDS_REALLY_DEL_MOUNT_POINTS \r
-                            "¿Está seguro de que desea eliminar el (los) punto(s) de montaje seleccionado(s)?"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "El directorio '%o' no existe."\r
-    IDS_CLEANACL_MSG        "¡Las ACL obsoletas se eliminarán!"\r
-    IDS_COPY_ACL_OK         "ACL copiada satisfactoriamente."\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE \r
-                            "No puede leerse la información de señal: Es posible que no se haya iniciado el servicio de AFS."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR \r
-                            "No puede leerse la información de señal: Error inesperado, código %d."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2 \r
-                            "No puede leerse la información de señal: Error inesperado, servicio %s.%s.%s, código %d."\r
-    IDS_ENTER_QUOTA         "Por favor, entre una cuota válida."\r
-    IDS_AUTHENTICATION_ITEM "&Autentificación..."\r
-    IDS_ACLS_ITEM           "Listas de &control de acceso..."\r
-    IDS_VOL_PART_ITEM       "&Volumen/Partición"\r
-    IDS_VOL_PART_PROPS_ITEM "&Propiedades"\r
-    IDS_VOL_PART_REFRESH_ITEM "&Actualizar nombre/mapa de ID"\r
-    IDS_MOUNT_POINT_ITEM    "Punto de &montaje"\r
-    IDS_MP_SHOW_ITEM        "&Mostrar..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS Client"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "&Eliminar..."\r
-    IDS_MP_MAKE_ITEM        "&Crear..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "&Descargar archivo/dir"\r
-    IDS_FLUSH_VOLUME_ITEM   "Descargar vol&umen"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "Mostrar ser&vidores de archivo..."\r
-    IDS_SHOW_CELL_ITEM      "Mostrar &célula..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "Mostrar estado de servidor..."\r
-    IDS_AFS_ITEM            "&AFS"\r
-    IDS_SUBMOUNTS_ITEM      "Su&bmontajes"\r
-    IDS_GET_SUBMT_INFO_ERROR \r
-                            "No se ha podido leer información de submontaje para el nombre de recurso compartido %o."\r
-    IDS_REALLY_DELETE_SUBMT "Suprimir nombre de recurso compartido %o?"\r
-    IDS_SUBMT_SAVE_FAILED   "Han fallado los cambios en la base de datos de submontaje."\r
-    IDS_SUBMOUNTS_CREATE_ITEM "&Añadir"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "&Editar..."\r
-    IDS_EDIT_PATH_NAME      "Editar nombre de vía de acceso"\r
-    IDS_SHOW_CELL           "Mostrar célula"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "Célula"\r
-    IDS_SHOW_FS             "Mostrar servidores de archivo"\r
-    IDS_SHOW_FS_COLUMN      "Servidor(es) de archivo"\r
-    IDS_REMOVE_MP           "Eliminar puntos de montaje"\r
-    IDS_REMOVE_MP_COLUMN    "Resultado"\r
-END\r
-\r
-#endif    // English (U.S.) resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE 9, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE 
+BEGIN
+    MENUITEM "Autentificación...",          IDM_AUTHENTICATION
+    MENUITEM "Listas de control de acceso...", IDM_ACL_SET
+    POPUP "Vo&lumen/Partición"
+    BEGIN
+        MENUITEM "&Propiedades...",             IDM_VOLUME_PROPERTIES
+        MENUITEM "&Actualizar nombre/mapa de ID", 
+                                                IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "Punto de monta&je"
+    BEGIN
+        MENUITEM "&Mostrar...",                 IDM_MOUNTPOINT_SHOW
+        MENUITEM "&Eliminar...",                IDM_MOUNTPOINT_REMOVE
+        MENUITEM "&Crear...",                   IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "&Descargar archivo/dir",      IDM_FLUSH
+    MENUITEM "Descargar vol&umen",          IDM_FLUSH_VOLUME
+    MENUITEM "Mostrar ser&vidores de archivo...", IDM_SHOW_SERVER
+    MENUITEM "Mostrar &célula...",          IDM_SHOWCELL
+    MENUITEM "Mostrar estado de servidor...", IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Información de volumen"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Aceptar",IDOK,60,150,50,14,WS_DISABLED
+    PUSHBUTTON      "Ayuda",9,240,150,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,150,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Archivo/directorio",IDC_STATIC,10,10,74,10
+    LTEXT           "Nombre",IDC_STATIC,90,10,71,8
+    LTEXT           "Cuota",IDC_STATIC,225,10,38,8
+    LTEXT           "Utilizado",IDC_STATIC,270,10,32,8
+    LTEXT           "%Utilizado",IDC_STATIC,305,10,34,8
+    LTEXT           "ID",IDC_STATIC,175,10,42,8
+    LTEXT           "Cuota nueva:",IDC_STATIC,10,127,46,10
+    EDITTEXT        IDC_NEW_QUOTA,58,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "Mostrar información de partición",IDC_PARTITION_INFO,
+                    205,125,112,14,WS_DISABLED
+    LTEXT           "KBytes",IDC_STATIC,128,127,25,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | 
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | 
+                    WS_DISABLED,115,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Establecer ACL de AFS"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,51,12,259,10
+    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - Leer",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,52,55,10
+    CONTROL         "w - Grabar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,111,55,10
+    CONTROL         "l - Buscar",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,66,55,10
+    CONTROL         "d - Suprimir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,96,55,10
+    CONTROL         "i - Insertar",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,81,55,10
+    CONTROL         "k - Bloquear",IDC_LOCK,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,126,55,10
+    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,200,141,61,10
+    PUSHBUTTON      "Aña&dir...",IDC_ADD,270,45,45,14
+    PUSHBUTTON      "&Eliminar",IDC_REMOVE,270,70,45,14,WS_DISABLED
+    PUSHBUTTON      "&Borrar",IDC_CLEAN,270,95,45,14
+    DEFPUSHBUTTON   "&Aceptar",IDOK,270,150,45,14
+    PUSHBUTTON      "Ca&ncelar",IDCANCEL,270,175,45,14
+    PUSHBUTTON      "A&yuda",9,270,201,45,14
+    LTEXT           "Directorio:",IDC_STATIC,15,12,34,10
+    GROUPBOX        "Permisos",IDC_STATIC,195,41,71,115
+    LTEXT           "normales",IDC_STATIC,10,36,30,8
+    LTEXT           "Nombre",IDC_COLUMN_3,69,38,36,8
+    LTEXT           "Permisos",IDC_STATIC,10,28,37,8
+    LTEXT           "negativos",IDC_STATIC,9,132,38,8
+    LTEXT           "Permisos",IDC_STATIC,9,124,38,8
+    LTEXT           "Nombre",IDC_COLUMN_4,69,133,42,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "Co&piar...",IDC_COPY,270,120,45,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 223, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Crear punto de montaje"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_DIR,45,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,45,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,45,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "Aceptar",IDOK,20,81,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "Ayuda",9,150,81,50,14
+    LTEXT           "Directorio:",IDC_STATIC,8,12,33,10
+    LTEXT           "Volumen:",IDC_STATIC,10,28,33,10
+    LTEXT           "Célula:",IDC_STATIC,18,42,25,10
+    GROUPBOX        "",IDC_STATIC,47,52,115,20
+    LTEXT           "Opciones:",IDC_STATIC,10,59,35,10
+    CONTROL         "Normales",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,51,59,41,10
+    CONTROL         "Leer/Grabar",IDC_RW,"Button",BS_AUTORADIOBUTTON,103,59,
+                    57,10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 250, 114
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Añadir entrada de ACL"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_NAME,48,70,190,12,ES_AUTOHSCROLL
+    CONTROL         "r - Leer",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,15,45,10
+    CONTROL         "l - Buscar",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,25,50,10
+    CONTROL         "i - Insertar",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,35,50,10
+    CONTROL         "d - Suprimir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,45,50,10
+    CONTROL         "w - Grabar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,15,50,10
+    CONTROL         "k - Bloquear",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,25,55,10
+    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,80,35,60,10
+    CONTROL         "Entrada normal",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,69,10
+    CONTROL         "Entrada negativa",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,161,26,72,10
+    PUSHBUTTON      "Aceptar",IDOK,22,90,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,92,90,50,14
+    PUSHBUTTON      "Ayuda",9,162,90,50,14
+    LTEXT           "Nombre:",IDC_STATIC,10,72,32,8
+    GROUPBOX        "Permisos",IDC_STATIC,10,5,135,55
+    GROUPBOX        "Tipo de entrada",IDC_STATIC,155,6,84,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 152, 82
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Información de partición"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,61,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,61,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,61,40,40,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "Cerrar",IDOK,14,62,40,14
+    PUSHBUTTON      "Ayuda",9,69,62,40,14
+    LTEXT           "% Utilizado:",IDC_STATIC,19,42,38,8
+    LTEXT           "Bloques libres:",IDC_STATIC,10,27,47,8
+    LTEXT           "Tamaño total:",IDC_STATIC,12,12,46,8
+    LTEXT           "Kilobytes",IDC_STATIC,106,12,33,8
+    LTEXT           "Kilobytes",IDC_STATIC,105,27,37,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Copiar ACL"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Examinar",IDC_BROWSE,191,25,39,15
+    CONTROL         "Borrar entradas actuales:",IDC_CLEAR,"Button",
+                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,97,10
+    DEFPUSHBUTTON   "Aceptar",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "Cancelar",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "Ayuda",9,170,65,50,14
+    LTEXT           "Copiar desde:",IDC_STATIC,8,12,44,8
+    LTEXT           "Copiar a:",IDC_STATIC,22,29,30,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dónde está"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ayuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Archivo/directorio",IDC_STATIC,10,10,111,8
+    LTEXT           "Servidor(es) de archivos",IDC_STATIC,128,10,130,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Resultados"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ayuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Archivo/directorio",-1,10,10,105,8
+    LTEXT           "Resultado",IDC_RESULTS_LABEL,128,10,148,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Puntos de montaje"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Cerrar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ayuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Archivo",IDC_STATIC,10,11,53,8
+    LTEXT           "Volumen",IDC_STATIC,75,11,66,8
+    LTEXT           "Célula",IDC_STATIC,155,11,63,8
+    LTEXT           "Tipo",IDC_STATIC,230,11,55,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Servidores no activos"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "Estos servidores siguen sin estar activos:",IDC_STATIC,
+                    10,10,182,8
+    DEFPUSHBUTTON   "Aceptar",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Estado de servidor"
+FONT 8, "MS Sans Serif"
+BEGIN
+    CONTROL         "Célula local",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP | WS_TABSTOP,20,20,136,8
+    CONTROL         "Célula especificada:",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,136,10
+    CONTROL         "Todas las células",IDC_ALL_CELLS,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,65,135,10
+    CONTROL         "No investigar servidores",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,93,10
+    PUSHBUTTON      "Mostrar estado",IDC_SHOWSTATUS,10,120,54,14
+    GROUPBOX        "Célula",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,100,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Cerrar",IDCANCEL,67,120,48,14
+    PUSHBUTTON      "Ayuda",9,119,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Autentificación"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    PUSHBUTTON      "Obtener señales",ID_GET_TOKENS,12,137,57,14
+    PUSHBUTTON      "Descartar señales",ID_DISCARD_TOKENS,79,137,62,14
+    PUSHBUTTON      "Cerrar",IDCANCEL,151,137,55,14
+    PUSHBUTTON      "Ayuda",9,217,137,55,14
+    LTEXT           "Nombre de usuario",IDC_STATIC,10,9,88,8
+    LTEXT           "Nombre de célula",IDC_STATIC,104,9,113,8
+    LTEXT           "Caducidad",IDC_STATIC,222,9,49,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 179, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "Obtener señales"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_NAME,54,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,53,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,53,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "Aceptar",IDOK,20,70,35,14,WS_DISABLED
+    PUSHBUTTON      "Cancelar",IDCANCEL,70,70,35,14
+    PUSHBUTTON      "Ayuda",9,120,70,35,14
+    LTEXT           "Nombre:",IDC_STATIC,21,12,29,8
+    LTEXT           "Contraseña:",IDC_STATIC,9,32,41,8
+    LTEXT           "Célula:",IDC_STATIC,25,52,24,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 192, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "Descartar señales"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Aceptar",IDOK,27,40,35,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,77,40,37,14
+    PUSHBUTTON      "Ayuda",9,129,40,35,14
+    LTEXT           "Célula:",IDC_STATIC,10,17,23,8
+    EDITTEXT        IDC_CELL_NAME,37,15,145,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Submontajes"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Añadir ",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "Suprimir",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "Cambiar",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "Submontajes:",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "Aceptar",IDOK,202,145,45,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 282, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Añadir submontaje"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,107,8,163,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,107,23,163,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Aceptar",IDOK,22,53,45,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,92,53,45,14
+    PUSHBUTTON      "Ayuda",9,167,53,45,14
+    LTEXT           "Nombre de compartición:",IDC_STATIC,18,10,87,8
+    LTEXT           "Nombre de vía de acceso:",IDC_STATIC,19,25,86,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_MAKE_MOUNT_POINT, DIALOG
+    BEGIN
+        RIGHTMARGIN, 222
+    END
+
+    IDD_ADD_ACL, DIALOG
+    BEGIN
+        RIGHTMARGIN, 235
+        BOTTOMMARGIN, 113
+    END
+
+    IDD_PARTITION_INFO, DIALOG
+    BEGIN
+        RIGHTMARGIN, 123
+    END
+
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 172
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 185
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 275
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "Iniciar o finalizar la sesión de AFS"
+    ID_SERVER_STATUS        "Comprobar servidores"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "No puede descargarse archivo activo %o"
+    IDS_FLUSH_ERROR         "Error al descargar archivo %o: %s"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_FLUSH_OK            "Archivo(s) seleccionado(s) descargado(s) satisfactoriamente"
+    IDS_CANT_GET_CELL       "Error al determinar célula:"
+    IDS_FLUSH_VOLUME_ERROR  "Error al descargar volumen para %o:  %s"
+    IDS_FLUSH_VOLUME_OK     "Volumen descargado satisfactoriamente"
+    IDS_WHERE_IS            "Archivo %o está en sistema principal %s"
+    IDS_CLEANACL_NOT_SUPPORTED 
+                            "No puede limpiarse ACL para archivo %o:  borrado de Acl no soportado para listas de acceso de DFS"
+    IDS_ACL_IS_FINE         "Lista de acceso para %o correcta"
+    IDS_CLEANACL_INVALID_ARG 
+                            "No puede limpiarse ACL para archivo %o: Argumento no válido, los posibles motivos incluyen: archivo no en servicio o demasiados usuarios de la lista de control de acceso. "
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "Se han eliminado entradas de ACL obsoletas."
+    ID_SUBMOUNTS            "Crear o eliminar un submontaje de AFS"
+    IDS_GETRIGHTS_ERROR     "No se ha podido leer lista de acceso para directorio %o:  %o"
+    IDS_DFSACL_ERROR        "No se han podido editar las ACL de DFS con este mandato"
+    IDS_SAVE_ACL_ERROR      "No se puede guardar ACL para %o:  %o"
+    IDS_SAVE_ACL_EINVAL_ERROR 
+                            "No se puede guardar ACL para %o: Argumento no válido, los posibles motivos incluyen: archivo no en AFS, demasiados usuarios en la lista de control de acceso, se ha intentado añadir un usuario no existente a la lista de control de acceso"
+    IDS_ACL_READ_ERROR      "No se puede leer ACL para %o:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "No puede copiarse ACL en dir %o: copiar ACL no soportado para listas de acceso de DFS"
+    IDS_COPY_ACL_EINVAL_ERROR 
+                            "No se puede copiar ACL en dir %o: Argumento no válido, los posibles motivos incluyen: Archivo no en AFS."
+    IDS_COPY_ACL_ERROR      "No se puede copiar ACL en %o:  %o"
+    IDS_NOT_MOUNT_POINT_ERROR "%o no es un punto de montaje."
+    IDS_LIST_MOUNT_POINT_ERROR "Error:  %o"
+    IDS_MAKE_MP_NOT_AFS_ERROR 
+                            "Deben crearse puntos de montaje en el sistema de archivos de AFS"
+    IDS_MOUNT_POINT_ERROR   "Error al crear punto de montaje:  %o"
+    IDS_ERROR               "Error:  %o"
+    IDS_DELETED             "Suprimido satisfactoriamente"
+    IDS_SET_QUOTA_ERROR     "Error al definir cuota:  %o"
+    ID_SUBMOUNTS_CREATE     "Crear un submontaje de AFS"
+    ID_SUBMOUNTS_EDIT       "Añadir, cambiar o suprimir submontajes de AFS"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "Error al comprobar el estado de máquinas de servidor de archivo:  %o"
+    IDS_ALL_SERVERS_RUNNING "Se están ejecutando todos los servidores."
+    IDS_CHECK_VOLUMES_OK    "Se están comprobando todas las correlaciones de ID de volumen/nombre."
+    IDS_CHECK_VOLUMES_ERROR "Error al comprobar las correlaciones de ID de volumen/nombre:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE 
+                            "El nombre elegido ya se está utilizando. Por favor, entre un nombre diferente."
+    IDS_REALLY_DEL_MOUNT_POINTS 
+                            "¿Está seguro de que desea eliminar el (los) punto(s) de montaje seleccionado(s)?"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "El directorio '%o' no existe."
+    IDS_CLEANACL_MSG        "¡Las ACL obsoletas se eliminarán!"
+    IDS_COPY_ACL_OK         "ACL copiada satisfactoriamente."
+    IDS_GET_TOKENS_NO_AFS_SERVICE 
+                            "No puede leerse la información de señal: Es posible que no se haya iniciado el servicio de AFS."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR 
+                            "No puede leerse la información de señal: Error inesperado, código %d."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2 
+                            "No puede leerse la información de señal: Error inesperado, servicio %s.%s.%s, código %d."
+    IDS_ENTER_QUOTA         "Por favor, entre una cuota válida."
+    IDS_AUTHENTICATION_ITEM "&Autentificación..."
+    IDS_ACLS_ITEM           "Listas de &control de acceso..."
+    IDS_VOL_PART_ITEM       "&Volumen/Partición"
+    IDS_VOL_PART_PROPS_ITEM "&Propiedades"
+    IDS_VOL_PART_REFRESH_ITEM "&Actualizar nombre/mapa de ID"
+    IDS_MOUNT_POINT_ITEM    "Punto de &montaje"
+    IDS_MP_SHOW_ITEM        "&Mostrar..."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS Client"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MP_REMOVE_ITEM      "&Eliminar..."
+    IDS_MP_MAKE_ITEM        "&Crear..."
+    IDS_FLUSH_FILE_DIR_ITEM "&Descargar archivo/dir"
+    IDS_FLUSH_VOLUME_ITEM   "Descargar vol&umen"
+    IDS_SHOW_FILE_SERVERS_ITEM "Mostrar ser&vidores de archivo..."
+    IDS_SHOW_CELL_ITEM      "Mostrar &célula..."
+    IDS_SHOW_SERVER_STATUS_ITEM "Mostrar estado de servidor..."
+    IDS_AFS_ITEM            "&AFS"
+    IDS_SUBMOUNTS_ITEM      "Su&bmontajes"
+    IDS_GET_SUBMT_INFO_ERROR 
+                            "No se ha podido leer información de submontaje para el nombre de recurso compartido %o."
+    IDS_REALLY_DELETE_SUBMT "Suprimir nombre de recurso compartido %o?"
+    IDS_SUBMT_SAVE_FAILED   "Han fallado los cambios en la base de datos de submontaje."
+    IDS_SUBMOUNTS_CREATE_ITEM "&Añadir"
+    IDS_SUBMOUNTS_EDIT_ITEM "&Editar..."
+    IDS_EDIT_PATH_NAME      "Editar nombre de vía de acceso"
+    IDS_SHOW_CELL           "Mostrar célula"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "Célula"
+    IDS_SHOW_FS             "Mostrar servidores de archivo"
+    IDS_SHOW_FS_COLUMN      "Servidor(es) de archivo"
+    IDS_REMOVE_MP           "Eliminar puntos de montaje"
+    IDS_REMOVE_MP_COLUMN    "Resultado"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index f53a88bd37a0e4be7d85a6dc9b37bc72dd0dc8d4..055ac4a569cdae913e5edc8a8e99d1803ae78656 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// Japanese resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 17, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE \r
-BEGIN\r
-    MENUITEM "\94F\8fØ...",                     IDM_AUTHENTICATION\r
-    MENUITEM "\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g...",       IDM_ACL_SET\r
-    POPUP "\83{\83\8a\83\85\81[\83\80 / \83p\81[\83e\83B\83V\83\87\83\93(&V)"\r
-    BEGIN\r
-        MENUITEM "\83v\83\8d\83p\83e\83B\81[(&P)...",         IDM_VOLUME_PROPERTIES\r
-        MENUITEM "\96¼\91O /ID \83}\83b\83s\83\93\83O\82Ì\8dÅ\90V\95\\8e¦(&R)", \r
-                                                IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g(&M)"\r
-    BEGIN\r
-        MENUITEM "\95\\8e¦(&S)...",                 IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "\8dí\8f\9c(&R)...",                 IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "\8dì\90¬(&M)...",                 IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "\83t\83@\83C\83\8b / \83f\83B\83\8c\83N\83g\83\8a\81[\82Ì\83t\83\89\83b\83V\83\85(&F)", IDM_FLUSH\r
-    MENUITEM "\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85(&U)",  IDM_FLUSH_VOLUME\r
-    MENUITEM "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82Ì\95\\8e¦(&F)...", IDM_SHOW_SERVER\r
-    MENUITEM "\83Z\83\8b\82Ì\95\\8e¦(&C)...",           IDM_SHOWCELL\r
-    MENUITEM "\83T\81[\83o\81[\8fó\8bµ\82Ì\95\\8e¦...",       IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "\83{\83\8a\83\85\81[\83\80\8fî\95ñ"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,60,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,240,150,50,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,150,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "\83t\83@\83C\83\8b / \83f\83B\83\8c\83N\83g\83\8a\81[",IDC_STATIC,10,3,55,17\r
-    LTEXT           "\96¼\91O",IDC_STATIC,90,10,20,8\r
-    LTEXT           "\8a\84\82è\93\96\82Ä\97Ê",IDC_STATIC,225,10,41,8\r
-    LTEXT           "\8eg\97p\97Ê",IDC_STATIC,270,10,25,8\r
-    LTEXT           "\8eg\97p\97¦ (%)",IDC_STATIC,305,10,39,8\r
-    LTEXT           "ID",IDC_STATIC,175,10,10,8\r
-    LTEXT           "\90V\8bK\8a\84\82è\93\96\82Ä\97Ê:",IDC_STATIC,10,127,56,10\r
-    EDITTEXT        IDC_NEW_QUOTA,75,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "\83p\81[\83e\83B\83V\83\87\83\93\8fî\95ñ\82Ì\95\\8e¦",IDC_PARTITION_INFO,205,125,\r
-                    102,14,WS_DISABLED\r
-    LTEXT           "KB",IDC_STATIC,145,127,25,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | \r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | \r
-                    WS_DISABLED,128,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "AFS ACL \82Ì\90Ý\92è"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,76,12,239,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,8,46,145,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,8,143,145,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - Read (\93Ç\82Ý\8eæ\82è)",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,160,52,81,10\r
-    CONTROL         "w - Write (\8f\91\82«\8d\9e\82Ý)",IDC_WRITE,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,160,111,81,10\r
-    CONTROL         "l - Lookup (\8c\9f\8dõ)",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,160,66,81,10\r
-    CONTROL         "d - Delete (\8dí\8f\9c)",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,160,96,81,10\r
-    CONTROL         "i - Insert (\91}\93ü)",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,160,81,81,10\r
-    CONTROL         "k - Lock (\83\8d\83b\83N)",IDC_LOCK,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,160,126,81,10\r
-    CONTROL         "a - Administer (\8aÇ\97\9d)",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,160,141,81,10\r
-    PUSHBUTTON      "\92Ç\89Á(&A)...",IDC_ADD,246,45,69,14\r
-    PUSHBUTTON      "\8dí\8f\9c(&R)",IDC_REMOVE,246,70,69,14,WS_DISABLED\r
-    PUSHBUTTON      "\83N\83\8a\81[\83j\83\93\83O(&C)",IDC_CLEAN,246,95,69,14\r
-    DEFPUSHBUTTON   "\97¹\89ð(&O)",IDOK,246,150,69,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ(&N)",IDCANCEL,246,175,69,14\r
-    PUSHBUTTON      "\83w\83\8b\83v(&H)",9,246,201,69,14\r
-    LTEXT           "\83f\83B\83\8c\83N\83g\83\8a\81[:",IDC_STATIC,15,12,60,10\r
-    GROUPBOX        "\83A\83N\83Z\83X\8c ",IDC_STATIC,155,41,89,115\r
-    LTEXT           "\95W\8f\80",IDC_STATIC,10,30,23,8\r
-    LTEXT           "\96¼\91O",IDC_COLUMN_3,69,38,20,8\r
-    LTEXT           "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,38,41,8\r
-    LTEXT           "\8bÖ\8e~",IDC_STATIC,10,127,17,8\r
-    LTEXT           "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,135,41,8\r
-    LTEXT           "\96¼\91O",IDC_COLUMN_4,69,135,20,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "\83R\83s\81[(&P)...",IDC_COPY,246,120,69,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 249, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Ì\8dì\90¬"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,70,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,70,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,70,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,81,50,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,150,81,50,14\r
-    LTEXT           "\83f\83B\83\8c\83N\83g\83\8a\81[:",IDC_STATIC,9,12,45,10\r
-    LTEXT           "\83{\83\8a\83\85\81[\83\80:",IDC_STATIC,9,28,45,10\r
-    LTEXT           "\83Z\83\8b:",IDC_STATIC,9,42,45,10\r
-    GROUPBOX        "",IDC_STATIC,70,52,145,20\r
-    LTEXT           "\83I\83v\83V\83\87\83\93:",IDC_STATIC,9,59,45,10\r
-    CONTROL         "\92Ê\8fí",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,75,59,41,10\r
-    CONTROL         "\93Ç\82Ý\8eæ\82è/\8f\91\82«\8d\9e\82Ý",IDC_RW,"Button",BS_AUTORADIOBUTTON,\r
-                    120,59,77,10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 245, 113\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ACL \8d\80\96Ú\82Ì\92Ç\89Á"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,37,70,190,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - Read (\93Ç\82Ý\8eæ\82è)",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,15,73,10\r
-    CONTROL         "l - Lookup (\8c\9f\8dõ)",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,25,67,10\r
-    CONTROL         "i - Insert (\91}\93ü)",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,35,60,10\r
-    CONTROL         "d - Delete (\8dí\8f\9c)",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,45,67,10\r
-    CONTROL         "w - Write (\8f\91\82«\8d\9e\82Ý)",IDC_WRITE,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,100,15,79,10\r
-    CONTROL         "k - Lock (\83\8d\83b\83N)",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,100,25,69,10\r
-    CONTROL         "a - Administer (\8aÇ\97\9d)",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,100,35,81,10\r
-    CONTROL         "\95W\8f\80\8d\80\96Ú",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,191,16,43,10\r
-    CONTROL         "\8bÖ\8e~\8d\80\96Ú",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,191,26,43,10\r
-    PUSHBUTTON      "\97¹\89ð",IDOK,22,90,50,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,92,90,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,162,90,50,14\r
-    LTEXT           "\96¼\91O:",IDC_STATIC,10,72,18,8\r
-    GROUPBOX        "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,5,175,55\r
-    GROUPBOX        "\8d\80\96Ú\83^\83C\83v",IDC_STATIC,186,6,53,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83p\81[\83e\83B\83V\83\87\83\93\8fî\95ñ"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,60,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,60,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,60,40,40,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,14,62,40,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,69,62,40,14\r
-    LTEXT           "\8eg\97p\97¦(%):",IDC_STATIC,10,42,42,8\r
-    LTEXT           "\8bó\82«\83u\83\8d\83b\83N:",IDC_STATIC,10,27,42,8\r
-    LTEXT           "\8d\87\8cv\83T\83C\83Y:",IDC_STATIC,10,12,42,8\r
-    LTEXT           "KB",IDC_STATIC,107,12,10,8\r
-    LTEXT           "KB",IDC_STATIC,107,27,10,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ACL \82Ì\83R\83s\81["\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,56,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,56,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "\8eQ\8fÆ",IDC_BROWSE,195,25,35,15\r
-    CONTROL         "\8c»\8dÝ\82Ì\8d\80\96Ú\82ð\8fÁ\8b\8e:",IDC_CLEAR,"Button",BS_AUTOCHECKBOX | \r
-                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,170,65,50,14\r
-    LTEXT           "\83R\83s\81[\8c³:",IDC_STATIC,14,12,34,8\r
-    LTEXT           "\83R\83s\81[\90æ:",IDC_STATIC,14,29,34,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\8c\9f\8dõ"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,21,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[",IDC_STATIC,10,10,91,8\r
-    LTEXT           "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[",IDC_STATIC,128,10,73,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\8c\8b\89Ê"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,22,280,115,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[",-1,10,10,91,8\r
-    LTEXT           "\8c\8b\89Ê",IDC_RESULTS_LABEL,128,10,17,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,23,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "\83t\83@\83C\83\8b",IDC_STATIC,10,11,33,8\r
-    LTEXT           "\83{\83\8a\83\85\81[\83\80",IDC_STATIC,75,11,41,8\r
-    LTEXT           "\83Z\83\8b",IDC_STATIC,155,11,17,8\r
-    LTEXT           "\83^\83C\83v",IDC_STATIC,230,11,25,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83T\81[\83o\81[\82ª\83_\83E\83\93"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    LISTBOX         1029,10,22,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "\88È\89º\82Ì\83T\81[\83o\81[\82Í\82Ü\82¾\83_\83E\83\93\82µ\82Ä\82¢\82Ü\82·:",IDC_STATIC,10,10,\r
-                    146,8\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "\83T\81[\83o\81[\8fó\8bµ"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    CONTROL         "\83\8d\81[\83J\83\8b\81E\83Z\83\8b",IDC_LOCALCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,20,20,59,8\r
-    CONTROL         "\8ew\92è\83Z\83\8b:",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,59,10\r
-    CONTROL         "\82·\82×\82Ä\82Ì\83Z\83\8b",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_TABSTOP,20,65,59,10\r
-    CONTROL         "\83T\81[\83o\81[\82ð\83v\83\8d\81[\83u\82µ\82È\82¢",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,107,10\r
-    PUSHBUTTON      "\8fó\8bµ\82Ì\95\\8e¦",IDC_SHOWSTATUS,10,120,50,14\r
-    GROUPBOX        "\83Z\83\8b",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,120,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,30,48,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "\83N\83\8d\81[\83Y",IDCANCEL,65,120,50,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,120,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\94F\8fØ"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,19,265,110,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "\83g\81[\83N\83\93\82Ì\8eæ\93¾",ID_GET_TOKENS,15,137,62,14\r
-    PUSHBUTTON      "\83g\81[\83N\83\93\82Ì\94j\8aü",ID_DISCARD_TOKENS,80,137,62,14\r
-    PUSHBUTTON      "\83N\83\8d\81[\83Y",IDCANCEL,145,137,55,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,215,137,55,14\r
-    LTEXT           "\83\86\81[\83U\81[\96¼",IDC_STATIC,10,9,41,8\r
-    LTEXT           "\83Z\83\8b\96¼",IDC_STATIC,104,9,25,8\r
-    LTEXT           "\97L\8cø\8aú\8cÀ",IDC_STATIC,222,9,33,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 179, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "\83g\81[\83N\83\93\82Ì\8eæ\93¾"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,52,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,52,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,52,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,70,35,14,WS_DISABLED\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,70,70,35,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,120,70,35,14\r
-    LTEXT           "\96¼\91O:",IDC_STATIC,25,13,20,8\r
-    LTEXT           "\83p\83X\83\8f\81[\83h:",IDC_STATIC,10,32,35,8\r
-    LTEXT           "\83Z\83\8b:",IDC_STATIC,26,51,19,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "\83g\81[\83N\83\93\82Ì\94j\8aü"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    DEFPUSHBUTTON   "\97¹\89ð",IDOK,25,40,35,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,75,40,35,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,125,40,35,14\r
-    LTEXT           "\83Z\83\8b:",IDC_STATIC,10,17,18,8\r
-    EDITTEXT        IDC_CELL_NAME,37,15,136,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83T\83u\83}\83E\83\93\83g"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "\92Ç\89Á ",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "\8dí\8f\9c",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "\95Ï\8dX",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "\83T\83u\83}\83E\83\93\83g:",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "\97¹\89ð",IDOK,202,145,45,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "\83T\83u\83}\83E\83\93\83g\82Ì\92Ç\89Á"\r
-FONT 9, "\82l\82\82o\83S\83V\83b\83N"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "\97¹\89ð",IDOK,22,53,45,14\r
-    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,92,53,45,14\r
-    PUSHBUTTON      "\83w\83\8b\83v",9,167,53,45,14\r
-    LTEXT           "\8b¤\97p\96¼:",IDC_STATIC,19,10,29,8\r
-    LTEXT           "\83p\83X\96¼:",IDC_STATIC,19,25,28,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 165\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 178\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 228\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "AFS \82Ì\83\8d\83O\83C\83\93\82Ü\82½\82Í\83\8d\83O\83A\83E\83g"\r
-    ID_SERVER_STATUS        "\83T\81[\83o\81[\82Ì\8c\9f\8d¸"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "\8a\88\93®\8fó\91Ô\82Ì\83t\83@\83C\83\8b %o \82ð\83t\83\89\83b\83V\83\85\82Å\82«\82Ü\82¹\82ñ"\r
-    IDS_FLUSH_ERROR         "\83t\83@\83C\83\8b %o \82Ì\83t\83\89\83b\83V\83\85\81E\83G\83\89\81[:  %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_FLUSH_OK            "\91I\91ð\82³\82ê\82½\83t\83@\83C\83\8b\82ª\90³\8fí\82É\83t\83\89\83b\83V\83\85\82³\82ê\82Ü\82µ\82½"\r
-    IDS_CANT_GET_CELL       "\83Z\83\8b\82Ì\94»\95Ê\83G\83\89\81[:  "\r
-    IDS_FLUSH_VOLUME_ERROR  "%o \82Ì\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85\81E\83G\83\89\81[:  %s"\r
-    IDS_FLUSH_VOLUME_OK     "\83{\83\8a\83\85\81[\83\80\82ª\90³\8fí\82É\83t\83\89\83b\83V\83\85\82³\82ê\82Ü\82µ\82½"\r
-    IDS_WHERE_IS            "\83t\83@\83C\83\8b %o \82Í\83z\83X\83g %s \82É\82 \82è\82Ü\82·"\r
-    IDS_CLEANACL_NOT_SUPPORTED \r
-                            "\83t\83@\83C\83\8b %o \82Ì ACL \82ð\83N\83\8a\81[\83j\83\93\83O\82Å\82«\82Ü\82¹\82ñ:  ACL \82Ì\83N\83\8a\81[\83j\83\93\83O\82Í DFS \83A\83N\83Z\83X\81E\83\8a\83X\83g\82Å\82Í\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"\r
-    IDS_ACL_IS_FINE         "%o \82Ì\83A\83N\83Z\83X\81E\83\8a\83X\83g\82Í\90³\8fí\82Å\82·"\r
-    IDS_CLEANACL_INVALID_ARG \r
-                            "\83t\83@\83C\83\8b %o \82Ì ACL \82ð\83N\83\8a\81[\83j\83\93\83O\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª vice \82É\82È\82¢\81A\82Ü\82½\82Í\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\83\86\81[\83U\81[\82ª\91½\82·\82¬\82é"\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "\8cÃ\82¢ ACL \8d\80\96Ú\82ª\8dí\8f\9c\82³\82ê\82Ü\82µ\82½\81B"\r
-    ID_SUBMOUNTS            "AFS \83T\83u\83}\83E\83\93\83g\82Ì\8dì\90¬\82Ü\82½\82Í\8dí\8f\9c"\r
-    IDS_GETRIGHTS_ERROR     "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82Ì\83A\83N\83Z\83X\81E\83\8a\83X\83g\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  %o"\r
-    IDS_DFSACL_ERROR        "DFS ACL \82Í\82±\82Ì\83R\83}\83\93\83h\82Å\95Ò\8fW\82Å\82«\82Ü\82¹\82ñ"\r
-    IDS_SAVE_ACL_ERROR      "%o \82Ì ACL \82ð\95Û\8aÇ\82Å\82«\82Ü\82¹\82ñ:  %o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR \r
-                            "%o \82Ì ACL \82ð\95Û\8aÇ\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª AFS \82É\82È\82¢\81A\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\83\86\81[\83U\81[\82ª\91½\82·\82¬\82é\81A\91\8dÝ\82µ\82È\82¢\83\86\81[\83U\81[\82ð\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\92Ç\89Á\82µ\82æ\82¤\82Æ\82µ\82½"\r
-    IDS_ACL_READ_ERROR      "%o \82Ì ACL \82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82É ACL \82ð\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  ACL \82Ì\83R\83s\81[\82Í DFS\83A\83N\83Z\83X\81E\83\8a\83X\83g\82Å\82Í\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"\r
-    IDS_COPY_ACL_EINVAL_ERROR \r
-                            "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82É ACL \82ð\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª AFS \82É\82È\82¢\81B"\r
-    IDS_COPY_ACL_ERROR      "ACL \82ð %o \82É\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  %o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%o \82Í\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B"\r
-    IDS_LIST_MOUNT_POINT_ERROR "\83G\83\89\81[:  %o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR \r
-                            "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð AFS \83t\83@\83C\83\8b\81E\83V\83X\83e\83\80\93à\82É\8dì\90¬\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·"\r
-    IDS_MOUNT_POINT_ERROR   "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Ì\8dì\90¬\83G\83\89\81[:  %o"\r
-    IDS_ERROR               "\83G\83\89\81[:  %o"\r
-    IDS_DELETED             "\90³\8fí\82É\8dí\8f\9c\82³\82ê\82Ü\82µ\82½"\r
-    IDS_SET_QUOTA_ERROR     "\8a\84\82è\93\96\82Ä\97Ê\82Ì\90Ý\92è\83G\83\89\81[:  %o"\r
-    ID_SUBMOUNTS_CREATE     "AFS \83T\83u\83}\83E\83\93\83g\82Ì\8dì\90¬"\r
-    ID_SUBMOUNTS_EDIT       "AFS \83T\83u\83}\83E\83\93\83g\82Ì\92Ç\89Á\81A\95Ï\8dX\81A\82Ü\82½\82Í\8dí\8f\9c"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\81E\83}\83V\83\93\82Ì\8fó\8bµ\82Ì\8c\9f\8d¸\83G\83\89\81[:  %o"\r
-    IDS_ALL_SERVERS_RUNNING "\82·\82×\82Ä\82Ì\83T\81[\83o\81[\82ª\8eÀ\8ds\92\86\82Å\82·\81B"\r
-    IDS_CHECK_VOLUMES_OK    "\82·\82×\82Ä\82Ì\83{\83\8a\83\85\81[\83\80 ID/\96¼\91O\82Ì\83}\83b\83s\83\93\83O\82ª\8c\9f\8d¸\82³\82ê\82Ü\82µ\82½\81B"\r
-    IDS_CHECK_VOLUMES_ERROR "\83{\83\8a\83\85\81[\83\80 ID/\96¼\91O\83}\83b\83s\83\93\83O\82Ì\8c\9f\8d¸\83G\83\89\81[:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE \r
-                            "\91I\91ð\82µ\82½\96¼\91O\82Í\82·\82Å\82É\8eg\97p\82³\82ê\82Ä\82¢\82Ü\82·\81B\95Ê\82Ì\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢\81B"\r
-    IDS_REALLY_DEL_MOUNT_POINTS \r
-                            "\91I\91ð\82µ\82½\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð\8dí\8f\9c\82µ\82Ä\82à\82¢\82¢\82Å\82·\82©?"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "\83f\83B\83\8c\83N\83g\83\8a\81[ '%o' \82ª\91\8dÝ\82µ\82Ü\82¹\82ñ\81B"\r
-    IDS_CLEANACL_MSG        "\8cÃ\82¢ ACL \82Í\8dí\8f\9c\82³\82ê\82Ü\82·!"\r
-    IDS_COPY_ACL_OK         "ACL \82ª\90³\8fí\82É\83R\83s\81[\82³\82ê\82Ü\82µ\82½\81B"\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE \r
-                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  AFS \83T\81[\83r\83X\82ª\8aJ\8en\82³\82ê\82Ä\82¢\82È\82¢\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B"\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR \r
-                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  \97\\8aú\82µ\82È\82¢\83G\83\89\81[\81A\83R\81[\83h %d "\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2 \r
-                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  \97\\8aú\82µ\82È\82¢\83G\83\89\81[\81A\83T\81[\83r\83X %s.%s.%s, \83R\81[\83h %d "\r
-    IDS_ENTER_QUOTA         "\97L\8cø\82È\8a\84\82è\93\96\82Ä\97Ê\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢\81B"\r
-    IDS_AUTHENTICATION_ITEM "\94F\8fØ(&A)..."\r
-    IDS_ACLS_ITEM           "\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g(&C)..."\r
-    IDS_VOL_PART_ITEM       "\83{\83\8a\83\85\81[\83\80/\83p\81[\83e\83B\83V\83\87\83\93(&V)"\r
-    IDS_VOL_PART_PROPS_ITEM "\83v\83\8d\83p\83e\83B\81[(&P)"\r
-    IDS_VOL_PART_REFRESH_ITEM "\96¼\91O /ID \83}\83b\83s\83\93\83O\82Ì\8dÅ\90V\95\\8e¦(&R)"\r
-    IDS_MOUNT_POINT_ITEM    "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g(&M)"\r
-    IDS_MP_SHOW_ITEM        "\95\\8e¦(&S)..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS \83N\83\89\83C\83A\83\93\83g"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "\8dí\8f\9c(&R)..."\r
-    IDS_MP_MAKE_ITEM        "\8dì\90¬(&M)..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[\82Ì\83t\83\89\83b\83V\83\85(&F)"\r
-    IDS_FLUSH_VOLUME_ITEM   "\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85(&U)"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82Ì\95\\8e¦(&F)..."\r
-    IDS_SHOW_CELL_ITEM      "\83Z\83\8b\82Ì\95\\8e¦(&C)..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "\83T\81[\83o\81[\8fó\8bµ\82Ì\95\\8e¦..."\r
-    IDS_AFS_ITEM            "AFS(&A)"\r
-    IDS_SUBMOUNTS_ITEM      "\83T\83u\83}\83E\83\93\83g(&B)"\r
-    IDS_GET_SUBMT_INFO_ERROR "\8b¤\97p\96¼ %o \82Ì\83T\83u\83}\83E\83\93\83g\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ\81B"\r
-    IDS_REALLY_DELETE_SUBMT "\8b¤\97p\96¼ %o \82ð\8dí\8f\9c\82µ\82Ü\82·\82©?"\r
-    IDS_SUBMT_SAVE_FAILED   "\83T\83u\83}\83E\83\93\83g\81E\83f\81[\83^\83x\81[\83X\82É\91Î\82·\82é\95Ï\8dX\82ª\8e¸\94s\82µ\82Ü\82µ\82½\81B"\r
-    IDS_SUBMOUNTS_CREATE_ITEM "\92Ç\89Á(&A)"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "\95Ò\8fW(&E)..."\r
-    IDS_EDIT_PATH_NAME      "\83p\83X\96¼\82Ì\95Ò\8fW"\r
-    IDS_SHOW_CELL           "\83Z\83\8b\82ð\95\\8e¦"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "\83Z\83\8b"\r
-    IDS_SHOW_FS             "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82ð\95\\8e¦"\r
-    IDS_SHOW_FS_COLUMN      "\83t\83@\83C\83\8b\81E\83T\81[\83o\81["\r
-    IDS_REMOVE_MP           "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð\8dí\8f\9c"\r
-    IDS_REMOVE_MP_COLUMN    "\8c\8b\89Ê"\r
-END\r
-\r
-#endif    // Japanese resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
-#ifdef _WIN32\r
-LANGUAGE 17, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Japanese resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 17, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE 
+BEGIN
+    MENUITEM "\94F\8fØ...",                     IDM_AUTHENTICATION
+    MENUITEM "\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g...",       IDM_ACL_SET
+    POPUP "\83{\83\8a\83\85\81[\83\80 / \83p\81[\83e\83B\83V\83\87\83\93(&V)"
+    BEGIN
+        MENUITEM "\83v\83\8d\83p\83e\83B\81[(&P)...",         IDM_VOLUME_PROPERTIES
+        MENUITEM "\96¼\91O /ID \83}\83b\83s\83\93\83O\82Ì\8dÅ\90V\95\\8e¦(&R)", 
+                                                IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g(&M)"
+    BEGIN
+        MENUITEM "\95\\8e¦(&S)...",                 IDM_MOUNTPOINT_SHOW
+        MENUITEM "\8dí\8f\9c(&R)...",                 IDM_MOUNTPOINT_REMOVE
+        MENUITEM "\8dì\90¬(&M)...",                 IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "\83t\83@\83C\83\8b / \83f\83B\83\8c\83N\83g\83\8a\81[\82Ì\83t\83\89\83b\83V\83\85(&F)", IDM_FLUSH
+    MENUITEM "\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85(&U)",  IDM_FLUSH_VOLUME
+    MENUITEM "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82Ì\95\\8e¦(&F)...", IDM_SHOW_SERVER
+    MENUITEM "\83Z\83\8b\82Ì\95\\8e¦(&C)...",           IDM_SHOWCELL
+    MENUITEM "\83T\81[\83o\81[\8fó\8bµ\82Ì\95\\8e¦...",       IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "\83{\83\8a\83\85\81[\83\80\8fî\95ñ"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,60,150,50,14,WS_DISABLED
+    PUSHBUTTON      "\83w\83\8b\83v",9,240,150,50,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,150,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "\83t\83@\83C\83\8b / \83f\83B\83\8c\83N\83g\83\8a\81[",IDC_STATIC,10,3,55,17
+    LTEXT           "\96¼\91O",IDC_STATIC,90,10,20,8
+    LTEXT           "\8a\84\82è\93\96\82Ä\97Ê",IDC_STATIC,225,10,41,8
+    LTEXT           "\8eg\97p\97Ê",IDC_STATIC,270,10,25,8
+    LTEXT           "\8eg\97p\97¦ (%)",IDC_STATIC,305,10,39,8
+    LTEXT           "ID",IDC_STATIC,175,10,10,8
+    LTEXT           "\90V\8bK\8a\84\82è\93\96\82Ä\97Ê:",IDC_STATIC,10,127,56,10
+    EDITTEXT        IDC_NEW_QUOTA,75,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "\83p\81[\83e\83B\83V\83\87\83\93\8fî\95ñ\82Ì\95\\8e¦",IDC_PARTITION_INFO,205,125,
+                    102,14,WS_DISABLED
+    LTEXT           "KB",IDC_STATIC,145,127,25,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | 
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | 
+                    WS_DISABLED,128,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "AFS ACL \82Ì\90Ý\92è"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,76,12,239,10
+    LISTBOX         IDC_NORMAL_RIGHTS,8,46,145,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,8,143,145,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - Read (\93Ç\82Ý\8eæ\82è)",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,160,52,81,10
+    CONTROL         "w - Write (\8f\91\82«\8d\9e\82Ý)",IDC_WRITE,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,160,111,81,10
+    CONTROL         "l - Lookup (\8c\9f\8dõ)",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,160,66,81,10
+    CONTROL         "d - Delete (\8dí\8f\9c)",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,160,96,81,10
+    CONTROL         "i - Insert (\91}\93ü)",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,160,81,81,10
+    CONTROL         "k - Lock (\83\8d\83b\83N)",IDC_LOCK,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,160,126,81,10
+    CONTROL         "a - Administer (\8aÇ\97\9d)",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,160,141,81,10
+    PUSHBUTTON      "\92Ç\89Á(&A)...",IDC_ADD,246,45,69,14
+    PUSHBUTTON      "\8dí\8f\9c(&R)",IDC_REMOVE,246,70,69,14,WS_DISABLED
+    PUSHBUTTON      "\83N\83\8a\81[\83j\83\93\83O(&C)",IDC_CLEAN,246,95,69,14
+    DEFPUSHBUTTON   "\97¹\89ð(&O)",IDOK,246,150,69,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ(&N)",IDCANCEL,246,175,69,14
+    PUSHBUTTON      "\83w\83\8b\83v(&H)",9,246,201,69,14
+    LTEXT           "\83f\83B\83\8c\83N\83g\83\8a\81[:",IDC_STATIC,15,12,60,10
+    GROUPBOX        "\83A\83N\83Z\83X\8c ",IDC_STATIC,155,41,89,115
+    LTEXT           "\95W\8f\80",IDC_STATIC,10,30,23,8
+    LTEXT           "\96¼\91O",IDC_COLUMN_3,69,38,20,8
+    LTEXT           "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,38,41,8
+    LTEXT           "\8bÖ\8e~",IDC_STATIC,10,127,17,8
+    LTEXT           "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,135,41,8
+    LTEXT           "\96¼\91O",IDC_COLUMN_4,69,135,20,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "\83R\83s\81[(&P)...",IDC_COPY,246,120,69,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 249, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Ì\8dì\90¬"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_DIR,70,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,70,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,70,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,81,50,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,150,81,50,14
+    LTEXT           "\83f\83B\83\8c\83N\83g\83\8a\81[:",IDC_STATIC,9,12,45,10
+    LTEXT           "\83{\83\8a\83\85\81[\83\80:",IDC_STATIC,9,28,45,10
+    LTEXT           "\83Z\83\8b:",IDC_STATIC,9,42,45,10
+    GROUPBOX        "",IDC_STATIC,70,52,145,20
+    LTEXT           "\83I\83v\83V\83\87\83\93:",IDC_STATIC,9,59,45,10
+    CONTROL         "\92Ê\8fí",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,75,59,41,10
+    CONTROL         "\93Ç\82Ý\8eæ\82è/\8f\91\82«\8d\9e\82Ý",IDC_RW,"Button",BS_AUTORADIOBUTTON,
+                    120,59,77,10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 245, 113
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ACL \8d\80\96Ú\82Ì\92Ç\89Á"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_NAME,37,70,190,12,ES_AUTOHSCROLL
+    CONTROL         "r - Read (\93Ç\82Ý\8eæ\82è)",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,15,73,10
+    CONTROL         "l - Lookup (\8c\9f\8dõ)",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,25,67,10
+    CONTROL         "i - Insert (\91}\93ü)",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,35,60,10
+    CONTROL         "d - Delete (\8dí\8f\9c)",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,45,67,10
+    CONTROL         "w - Write (\8f\91\82«\8d\9e\82Ý)",IDC_WRITE,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,100,15,79,10
+    CONTROL         "k - Lock (\83\8d\83b\83N)",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,100,25,69,10
+    CONTROL         "a - Administer (\8aÇ\97\9d)",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,100,35,81,10
+    CONTROL         "\95W\8f\80\8d\80\96Ú",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,191,16,43,10
+    CONTROL         "\8bÖ\8e~\8d\80\96Ú",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,191,26,43,10
+    PUSHBUTTON      "\97¹\89ð",IDOK,22,90,50,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,92,90,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,162,90,50,14
+    LTEXT           "\96¼\91O:",IDC_STATIC,10,72,18,8
+    GROUPBOX        "\83A\83N\83Z\83X\8c ",IDC_STATIC,10,5,175,55
+    GROUPBOX        "\8d\80\96Ú\83^\83C\83v",IDC_STATIC,186,6,53,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83p\81[\83e\83B\83V\83\87\83\93\8fî\95ñ"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,60,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,60,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,60,40,40,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,14,62,40,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,69,62,40,14
+    LTEXT           "\8eg\97p\97¦(%):",IDC_STATIC,10,42,42,8
+    LTEXT           "\8bó\82«\83u\83\8d\83b\83N:",IDC_STATIC,10,27,42,8
+    LTEXT           "\8d\87\8cv\83T\83C\83Y:",IDC_STATIC,10,12,42,8
+    LTEXT           "KB",IDC_STATIC,107,12,10,8
+    LTEXT           "KB",IDC_STATIC,107,27,10,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ACL \82Ì\83R\83s\81["
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,56,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,56,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "\8eQ\8fÆ",IDC_BROWSE,195,25,35,15
+    CONTROL         "\8c»\8dÝ\82Ì\8d\80\96Ú\82ð\8fÁ\8b\8e:",IDC_CLEAR,"Button",BS_AUTOCHECKBOX | 
+                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,170,65,50,14
+    LTEXT           "\83R\83s\81[\8c³:",IDC_STATIC,14,12,34,8
+    LTEXT           "\83R\83s\81[\90æ:",IDC_STATIC,14,29,34,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\8c\9f\8dõ"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,21,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[",IDC_STATIC,10,10,91,8
+    LTEXT           "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[",IDC_STATIC,128,10,73,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\8c\8b\89Ê"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,22,280,115,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[",-1,10,10,91,8
+    LTEXT           "\8c\8b\89Ê",IDC_RESULTS_LABEL,128,10,17,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    DEFPUSHBUTTON   "\83N\83\8d\81[\83Y",IDOK,65,145,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,23,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "\83t\83@\83C\83\8b",IDC_STATIC,10,11,33,8
+    LTEXT           "\83{\83\8a\83\85\81[\83\80",IDC_STATIC,75,11,41,8
+    LTEXT           "\83Z\83\8b",IDC_STATIC,155,11,17,8
+    LTEXT           "\83^\83C\83v",IDC_STATIC,230,11,25,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "\83T\81[\83o\81[\82ª\83_\83E\83\93"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    LISTBOX         1029,10,22,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "\88È\89º\82Ì\83T\81[\83o\81[\82Í\82Ü\82¾\83_\83E\83\93\82µ\82Ä\82¢\82Ü\82·:",IDC_STATIC,10,10,
+                    146,8
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "\83T\81[\83o\81[\8fó\8bµ"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    CONTROL         "\83\8d\81[\83J\83\8b\81E\83Z\83\8b",IDC_LOCALCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,20,20,59,8
+    CONTROL         "\8ew\92è\83Z\83\8b:",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,59,10
+    CONTROL         "\82·\82×\82Ä\82Ì\83Z\83\8b",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | 
+                    WS_TABSTOP,20,65,59,10
+    CONTROL         "\83T\81[\83o\81[\82ð\83v\83\8d\81[\83u\82µ\82È\82¢",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,107,10
+    PUSHBUTTON      "\8fó\8bµ\82Ì\95\\8e¦",IDC_SHOWSTATUS,10,120,50,14
+    GROUPBOX        "\83Z\83\8b",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,120,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,30,48,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "\83N\83\8d\81[\83Y",IDCANCEL,65,120,50,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,120,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\94F\8fØ"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,19,265,110,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    PUSHBUTTON      "\83g\81[\83N\83\93\82Ì\8eæ\93¾",ID_GET_TOKENS,15,137,62,14
+    PUSHBUTTON      "\83g\81[\83N\83\93\82Ì\94j\8aü",ID_DISCARD_TOKENS,80,137,62,14
+    PUSHBUTTON      "\83N\83\8d\81[\83Y",IDCANCEL,145,137,55,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,215,137,55,14
+    LTEXT           "\83\86\81[\83U\81[\96¼",IDC_STATIC,10,9,41,8
+    LTEXT           "\83Z\83\8b\96¼",IDC_STATIC,104,9,25,8
+    LTEXT           "\97L\8cø\8aú\8cÀ",IDC_STATIC,222,9,33,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 179, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "\83g\81[\83N\83\93\82Ì\8eæ\93¾"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_NAME,52,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,52,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,52,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,20,70,35,14,WS_DISABLED
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,70,70,35,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,120,70,35,14
+    LTEXT           "\96¼\91O:",IDC_STATIC,25,13,20,8
+    LTEXT           "\83p\83X\83\8f\81[\83h:",IDC_STATIC,10,32,35,8
+    LTEXT           "\83Z\83\8b:",IDC_STATIC,26,51,19,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "\83g\81[\83N\83\93\82Ì\94j\8aü"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    DEFPUSHBUTTON   "\97¹\89ð",IDOK,25,40,35,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,75,40,35,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,125,40,35,14
+    LTEXT           "\83Z\83\8b:",IDC_STATIC,10,17,18,8
+    EDITTEXT        IDC_CELL_NAME,37,15,136,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "\83T\83u\83}\83E\83\93\83g"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "\92Ç\89Á ",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "\8dí\8f\9c",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "\95Ï\8dX",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "\83T\83u\83}\83E\83\93\83g:",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "\97¹\89ð",IDOK,202,145,45,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83T\83u\83}\83E\83\93\83g\82Ì\92Ç\89Á"
+FONT 9, "\82l\82\82o\83S\83V\83b\83N"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "\97¹\89ð",IDOK,22,53,45,14
+    PUSHBUTTON      "\8eæ\8fÁ\82µ",IDCANCEL,92,53,45,14
+    PUSHBUTTON      "\83w\83\8b\83v",9,167,53,45,14
+    LTEXT           "\8b¤\97p\96¼:",IDC_STATIC,19,10,29,8
+    LTEXT           "\83p\83X\96¼:",IDC_STATIC,19,25,28,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 165
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 178
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 228
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "AFS \82Ì\83\8d\83O\83C\83\93\82Ü\82½\82Í\83\8d\83O\83A\83E\83g"
+    ID_SERVER_STATUS        "\83T\81[\83o\81[\82Ì\8c\9f\8d¸"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "\8a\88\93®\8fó\91Ô\82Ì\83t\83@\83C\83\8b %o \82ð\83t\83\89\83b\83V\83\85\82Å\82«\82Ü\82¹\82ñ"
+    IDS_FLUSH_ERROR         "\83t\83@\83C\83\8b %o \82Ì\83t\83\89\83b\83V\83\85\81E\83G\83\89\81[:  %s"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_FLUSH_OK            "\91I\91ð\82³\82ê\82½\83t\83@\83C\83\8b\82ª\90³\8fí\82É\83t\83\89\83b\83V\83\85\82³\82ê\82Ü\82µ\82½"
+    IDS_CANT_GET_CELL       "\83Z\83\8b\82Ì\94»\95Ê\83G\83\89\81[:  "
+    IDS_FLUSH_VOLUME_ERROR  "%o \82Ì\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85\81E\83G\83\89\81[:  %s"
+    IDS_FLUSH_VOLUME_OK     "\83{\83\8a\83\85\81[\83\80\82ª\90³\8fí\82É\83t\83\89\83b\83V\83\85\82³\82ê\82Ü\82µ\82½"
+    IDS_WHERE_IS            "\83t\83@\83C\83\8b %o \82Í\83z\83X\83g %s \82É\82 \82è\82Ü\82·"
+    IDS_CLEANACL_NOT_SUPPORTED 
+                            "\83t\83@\83C\83\8b %o \82Ì ACL \82ð\83N\83\8a\81[\83j\83\93\83O\82Å\82«\82Ü\82¹\82ñ:  ACL \82Ì\83N\83\8a\81[\83j\83\93\83O\82Í DFS \83A\83N\83Z\83X\81E\83\8a\83X\83g\82Å\82Í\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"
+    IDS_ACL_IS_FINE         "%o \82Ì\83A\83N\83Z\83X\81E\83\8a\83X\83g\82Í\90³\8fí\82Å\82·"
+    IDS_CLEANACL_INVALID_ARG 
+                            "\83t\83@\83C\83\8b %o \82Ì ACL \82ð\83N\83\8a\81[\83j\83\93\83O\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª vice \82É\82È\82¢\81A\82Ü\82½\82Í\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\83\86\81[\83U\81[\82ª\91½\82·\82¬\82é"
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "\8cÃ\82¢ ACL \8d\80\96Ú\82ª\8dí\8f\9c\82³\82ê\82Ü\82µ\82½\81B"
+    ID_SUBMOUNTS            "AFS \83T\83u\83}\83E\83\93\83g\82Ì\8dì\90¬\82Ü\82½\82Í\8dí\8f\9c"
+    IDS_GETRIGHTS_ERROR     "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82Ì\83A\83N\83Z\83X\81E\83\8a\83X\83g\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  %o"
+    IDS_DFSACL_ERROR        "DFS ACL \82Í\82±\82Ì\83R\83}\83\93\83h\82Å\95Ò\8fW\82Å\82«\82Ü\82¹\82ñ"
+    IDS_SAVE_ACL_ERROR      "%o \82Ì ACL \82ð\95Û\8aÇ\82Å\82«\82Ü\82¹\82ñ:  %o"
+    IDS_SAVE_ACL_EINVAL_ERROR 
+                            "%o \82Ì ACL \82ð\95Û\8aÇ\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª AFS \82É\82È\82¢\81A\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\83\86\81[\83U\81[\82ª\91½\82·\82¬\82é\81A\91\8dÝ\82µ\82È\82¢\83\86\81[\83U\81[\82ð\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g\82É\92Ç\89Á\82µ\82æ\82¤\82Æ\82µ\82½"
+    IDS_ACL_READ_ERROR      "%o \82Ì ACL \82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82É ACL \82ð\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  ACL \82Ì\83R\83s\81[\82Í DFS\83A\83N\83Z\83X\81E\83\8a\83X\83g\82Å\82Í\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"
+    IDS_COPY_ACL_EINVAL_ERROR 
+                            "\83f\83B\83\8c\83N\83g\83\8a\81[ %o \82É ACL \82ð\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  \96³\8cø\82È\88ø\82«\90\94\81A\8dl\82¦\82ç\82ê\82é\97\9d\97R:  \83t\83@\83C\83\8b\82ª AFS \82É\82È\82¢\81B"
+    IDS_COPY_ACL_ERROR      "ACL \82ð %o \82É\83R\83s\81[\82Å\82«\82Ü\82¹\82ñ:  %o"
+    IDS_NOT_MOUNT_POINT_ERROR "%o \82Í\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B"
+    IDS_LIST_MOUNT_POINT_ERROR "\83G\83\89\81[:  %o"
+    IDS_MAKE_MP_NOT_AFS_ERROR 
+                            "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð AFS \83t\83@\83C\83\8b\81E\83V\83X\83e\83\80\93à\82É\8dì\90¬\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·"
+    IDS_MOUNT_POINT_ERROR   "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82Ì\8dì\90¬\83G\83\89\81[:  %o"
+    IDS_ERROR               "\83G\83\89\81[:  %o"
+    IDS_DELETED             "\90³\8fí\82É\8dí\8f\9c\82³\82ê\82Ü\82µ\82½"
+    IDS_SET_QUOTA_ERROR     "\8a\84\82è\93\96\82Ä\97Ê\82Ì\90Ý\92è\83G\83\89\81[:  %o"
+    ID_SUBMOUNTS_CREATE     "AFS \83T\83u\83}\83E\83\93\83g\82Ì\8dì\90¬"
+    ID_SUBMOUNTS_EDIT       "AFS \83T\83u\83}\83E\83\93\83g\82Ì\92Ç\89Á\81A\95Ï\8dX\81A\82Ü\82½\82Í\8dí\8f\9c"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\81E\83}\83V\83\93\82Ì\8fó\8bµ\82Ì\8c\9f\8d¸\83G\83\89\81[:  %o"
+    IDS_ALL_SERVERS_RUNNING "\82·\82×\82Ä\82Ì\83T\81[\83o\81[\82ª\8eÀ\8ds\92\86\82Å\82·\81B"
+    IDS_CHECK_VOLUMES_OK    "\82·\82×\82Ä\82Ì\83{\83\8a\83\85\81[\83\80 ID/\96¼\91O\82Ì\83}\83b\83s\83\93\83O\82ª\8c\9f\8d¸\82³\82ê\82Ü\82µ\82½\81B"
+    IDS_CHECK_VOLUMES_ERROR "\83{\83\8a\83\85\81[\83\80 ID/\96¼\91O\83}\83b\83s\83\93\83O\82Ì\8c\9f\8d¸\83G\83\89\81[:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE 
+                            "\91I\91ð\82µ\82½\96¼\91O\82Í\82·\82Å\82É\8eg\97p\82³\82ê\82Ä\82¢\82Ü\82·\81B\95Ê\82Ì\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢\81B"
+    IDS_REALLY_DEL_MOUNT_POINTS 
+                            "\91I\91ð\82µ\82½\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð\8dí\8f\9c\82µ\82Ä\82à\82¢\82¢\82Å\82·\82©?"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "\83f\83B\83\8c\83N\83g\83\8a\81[ '%o' \82ª\91\8dÝ\82µ\82Ü\82¹\82ñ\81B"
+    IDS_CLEANACL_MSG        "\8cÃ\82¢ ACL \82Í\8dí\8f\9c\82³\82ê\82Ü\82·!"
+    IDS_COPY_ACL_OK         "ACL \82ª\90³\8fí\82É\83R\83s\81[\82³\82ê\82Ü\82µ\82½\81B"
+    IDS_GET_TOKENS_NO_AFS_SERVICE 
+                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  AFS \83T\81[\83r\83X\82ª\8aJ\8en\82³\82ê\82Ä\82¢\82È\82¢\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B"
+    IDS_GET_TOKENS_UNEXPECTED_ERROR 
+                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  \97\\8aú\82µ\82È\82¢\83G\83\89\81[\81A\83R\81[\83h %d "
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2 
+                            "\83g\81[\83N\83\93\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ:  \97\\8aú\82µ\82È\82¢\83G\83\89\81[\81A\83T\81[\83r\83X %s.%s.%s, \83R\81[\83h %d "
+    IDS_ENTER_QUOTA         "\97L\8cø\82È\8a\84\82è\93\96\82Ä\97Ê\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢\81B"
+    IDS_AUTHENTICATION_ITEM "\94F\8fØ(&A)..."
+    IDS_ACLS_ITEM           "\83A\83N\83Z\83X\90§\8cä\83\8a\83X\83g(&C)..."
+    IDS_VOL_PART_ITEM       "\83{\83\8a\83\85\81[\83\80/\83p\81[\83e\83B\83V\83\87\83\93(&V)"
+    IDS_VOL_PART_PROPS_ITEM "\83v\83\8d\83p\83e\83B\81[(&P)"
+    IDS_VOL_PART_REFRESH_ITEM "\96¼\91O /ID \83}\83b\83s\83\93\83O\82Ì\8dÅ\90V\95\\8e¦(&R)"
+    IDS_MOUNT_POINT_ITEM    "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g(&M)"
+    IDS_MP_SHOW_ITEM        "\95\\8e¦(&S)..."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS \83N\83\89\83C\83A\83\93\83g"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MP_REMOVE_ITEM      "\8dí\8f\9c(&R)..."
+    IDS_MP_MAKE_ITEM        "\8dì\90¬(&M)..."
+    IDS_FLUSH_FILE_DIR_ITEM "\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\81[\82Ì\83t\83\89\83b\83V\83\85(&F)"
+    IDS_FLUSH_VOLUME_ITEM   "\83{\83\8a\83\85\81[\83\80\82Ì\83t\83\89\83b\83V\83\85(&U)"
+    IDS_SHOW_FILE_SERVERS_ITEM "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82Ì\95\\8e¦(&F)..."
+    IDS_SHOW_CELL_ITEM      "\83Z\83\8b\82Ì\95\\8e¦(&C)..."
+    IDS_SHOW_SERVER_STATUS_ITEM "\83T\81[\83o\81[\8fó\8bµ\82Ì\95\\8e¦..."
+    IDS_AFS_ITEM            "AFS(&A)"
+    IDS_SUBMOUNTS_ITEM      "\83T\83u\83}\83E\83\93\83g(&B)"
+    IDS_GET_SUBMT_INFO_ERROR "\8b¤\97p\96¼ %o \82Ì\83T\83u\83}\83E\83\93\83g\8fî\95ñ\82ð\93Ç\82Ý\8eæ\82ê\82Ü\82¹\82ñ\81B"
+    IDS_REALLY_DELETE_SUBMT "\8b¤\97p\96¼ %o \82ð\8dí\8f\9c\82µ\82Ü\82·\82©?"
+    IDS_SUBMT_SAVE_FAILED   "\83T\83u\83}\83E\83\93\83g\81E\83f\81[\83^\83x\81[\83X\82É\91Î\82·\82é\95Ï\8dX\82ª\8e¸\94s\82µ\82Ü\82µ\82½\81B"
+    IDS_SUBMOUNTS_CREATE_ITEM "\92Ç\89Á(&A)"
+    IDS_SUBMOUNTS_EDIT_ITEM "\95Ò\8fW(&E)..."
+    IDS_EDIT_PATH_NAME      "\83p\83X\96¼\82Ì\95Ò\8fW"
+    IDS_SHOW_CELL           "\83Z\83\8b\82ð\95\\8e¦"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "\83Z\83\8b"
+    IDS_SHOW_FS             "\83t\83@\83C\83\8b\81E\83T\81[\83o\81[\82ð\95\\8e¦"
+    IDS_SHOW_FS_COLUMN      "\83t\83@\83C\83\8b\81E\83T\81[\83o\81["
+    IDS_REMOVE_MP           "\83}\83E\83\93\83g\81E\83|\83C\83\93\83g\82ð\8dí\8f\9c"
+    IDS_REMOVE_MP_COLUMN    "\8c\8b\89Ê"
+END
+
+#endif    // Japanese resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+LANGUAGE 17, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index c1218a1c4cd54a5a03df0254d0b31eef3ed1056a..2a7cf0023e790fdc6c4100af6645801a4e7e4f20 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// Korean resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 18, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE \r
-BEGIN\r
-    MENUITEM "ÀÎÁõ...",                     IDM_AUTHENTICATION\r
-    MENUITEM "¾×¼¼½º Á¦¾î ¸ñ·Ï...",         IDM_ACL_SET\r
-    POPUP "º¼·ý/ÆÄƼ¼Ç(&V)"\r
-    BEGIN\r
-        MENUITEM "Ư¼º(&P)...",                 IDM_VOLUME_PROPERTIES\r
-        MENUITEM "À̸§/ID ¸ÊÇΠ»õ·Î °íħ(&R)",  IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "¸¶¿îÆ® Æ÷ÀÎÆ®(&M)"\r
-    BEGIN\r
-        MENUITEM "Ç¥½Ã(&S)...",                 IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "Á¦°Å(&R)...",                 IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "ÀÛ¼º(&M)...",                 IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "ÆÄÀÏ/µð·ºÅ丮 Ç÷¯½¬(&F)",    IDM_FLUSH\r
-    MENUITEM "º¼·ý Ç÷¯½¬(&U)",             IDM_FLUSH_VOLUME\r
-    MENUITEM "ÆÄÀÏ ¼­¹ö Ç¥½Ã(&F)...",       IDM_SHOW_SERVER\r
-    MENUITEM "¼¿ Ç¥½Ã(&C)...",              IDM_SHOWCELL\r
-    MENUITEM "¼­¹ö »óÅ ǥ½Ã ...",          IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "º¼·ý Á¤º¸"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,60,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "µµ¿ò¸»",9,240,150,50,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,150,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",IDC_STATIC,10,9,56,8\r
-    LTEXT           "À̸§",IDC_STATIC,90,10,20,8\r
-    LTEXT           "ÇÒ´ç·®",IDC_STATIC,225,10,29,8\r
-    LTEXT           "»ç¿ë",IDC_STATIC,270,10,24,8\r
-    LTEXT           "»ç¿ë ¹éºÐÀ²",IDC_STATIC,298,10,38,8\r
-    LTEXT           "ID",IDC_STATIC,171,10,14,8\r
-    LTEXT           "»õ ÇÒ´ç·®:",IDC_STATIC,10,127,40,10\r
-    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "ÆÄƼ¼Ç Á¤º¸ Ç¥½Ã",IDC_PARTITION_INFO,205,125,69,14,\r
-                    WS_DISABLED\r
-    LTEXT           "KB",IDC_STATIC,118,127,25,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | \r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | \r
-                    WS_DISABLED,106,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "AFS ACL ¼³Á¤"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,51,12,259,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - Àбâ",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,52,55,10\r
-    CONTROL         "w - ¾²±â",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,111,55,10\r
-    CONTROL         "l - Á¶È¸",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,66,55,10\r
-    CONTROL         "d - »èÁ¦",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,96,55,10\r
-    CONTROL         "i - »ðÀÔ",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,81,55,10\r
-    CONTROL         "k - Àá±Ý",IDC_LOCK,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,126,55,10\r
-    CONTROL         "a - °ü¸®ÀÚ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,141,55,10\r
-    PUSHBUTTON      "Ãß°¡(&A)...",IDC_ADD,270,45,45,14\r
-    PUSHBUTTON      "Á¦°Å(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED\r
-    PUSHBUTTON      "Á¤¸®(&C)",IDC_CLEAN,270,95,45,14\r
-    DEFPUSHBUTTON   "È®ÀÎ(&O)",IDOK,270,150,45,14\r
-    PUSHBUTTON      "Ãë¼Ò(&N)",IDCANCEL,270,175,45,14\r
-    PUSHBUTTON      "µµ¿ò¸»(&H)",9,270,201,45,14\r
-    LTEXT           "µð·ºÅ丮:",IDC_STATIC,15,12,41,10\r
-    GROUPBOX        "±ÇÇÑ",IDC_STATIC,195,41,65,115\r
-    LTEXT           "±àÁ¤",IDC_STATIC,10,30,23,8\r
-    LTEXT           "À̸§",IDC_COLUMN_3,69,38,20,8\r
-    LTEXT           "±ÇÇÑ",IDC_STATIC,10,38,37,8\r
-    LTEXT           "ºÎÁ¤",IDC_STATIC,10,125,30,8\r
-    LTEXT           "±ÇÇÑ",IDC_STATIC,10,133,38,8\r
-    LTEXT           "À̸§",IDC_COLUMN_4,69,133,20,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "º¹»ç(&P)...",IDC_COPY,270,120,45,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¸¶¿îÆ® Æ÷ÀÎÆ® ÀÛ¼º"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,81,50,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,150,81,50,14\r
-    LTEXT           "µð·ºÅ丮:",IDC_STATIC,5,12,30,10\r
-    LTEXT           "º¼·ý:",IDC_STATIC,12,26,25,10\r
-    LTEXT           "¼¿:",IDC_STATIC,19,41,15,10\r
-    GROUPBOX        "",IDC_STATIC,40,52,115,20\r
-    LTEXT           "¿É¼Ç:",IDC_STATIC,12,57,24,10\r
-    CONTROL         "ÀϹÝ",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,45,59,41,10\r
-    CONTROL         "Àбâ/¾²±â",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,50,\r
-                    10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ACL Ç׸ñ Ãß°¡"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,35,70,190,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - Àбâ",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,15,45,10\r
-    CONTROL         "l - Á¶È¸",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,25,50,10\r
-    CONTROL         "i - »ðÀÔ",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,35,50,10\r
-    CONTROL         "d - »èÁ¦",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,45,50,10\r
-    CONTROL         "w - ¾²±â",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,15,50,10\r
-    CONTROL         "k - Àá±Ý",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,25,55,10\r
-    CONTROL         "a - °ü¸®ÀÚ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,35,60,10\r
-    CONTROL         "±àÁ¤ Ç׸ñ",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10\r
-    CONTROL         "ºÎÁ¤ Ç׸ñ",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,161,26,59,10\r
-    PUSHBUTTON      "È®ÀÎ",IDOK,22,90,50,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,92,90,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,162,90,50,14\r
-    LTEXT           "À̸§:",IDC_STATIC,10,72,20,8\r
-    GROUPBOX        "±ÇÇÑ",IDC_STATIC,10,5,135,55\r
-    GROUPBOX        "Ç׸ñ À¯Çü",IDC_STATIC,155,6,70,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ÆÄƼ¼Ç Á¤º¸"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,67,9,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,67,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,67,39,40,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "´Ý±â",IDOK,14,62,40,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,69,62,40,14\r
-    LTEXT           "»ç¿ë %:",IDC_STATIC,5,42,52,8\r
-    LTEXT           "»ç¿ë°¡´ÉÇÑ ºí·°:",IDC_STATIC,5,27,54,8\r
-    LTEXT           "ÃÑ Å©±â:",IDC_STATIC,7,12,36,8\r
-    LTEXT           "KB",IDC_STATIC,109,11,11,8\r
-    LTEXT           "K",IDC_STATIC,109,27,8,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ACL º¹»ç"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "ã¾Æº¸±â",IDC_BROWSE,195,25,35,15\r
-    CONTROL         "ÇöÀç ÀԷ Ç׸ñ Áö¿ì±â:",IDC_CLEAR,"Button",\r
-                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,82,10\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,170,65,50,14\r
-    LTEXT           "º¹»ç ¿øº»:",IDC_STATIC,13,13,35,8\r
-    LTEXT           "º¹»ç ´ë»ó:",IDC_STATIC,13,29,37,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "À§Ä¡"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",IDC_STATIC,10,10,59,8\r
-    LTEXT           "ÆÄÀÏ ¼­¹ö",IDC_STATIC,128,10,44,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "°á°ú"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",-1,10,10,45,8\r
-    LTEXT           "°á°ú",IDC_RESULTS_LABEL,128,10,44,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¸¶¿îÆ® Æ÷ÀÎÆ®"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "ÆÄÀÏ",IDC_STATIC,10,11,13,8\r
-    LTEXT           "º¼·ý",IDC_STATIC,75,11,27,8\r
-    LTEXT           "¼¿",IDC_STATIC,155,11,15,8\r
-    LTEXT           "À¯Çü",IDC_STATIC,230,11,20,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¼­¹ö Áß´Ü"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "ÀÌ ¼­¹ö´Â ¾ÆÁ÷ ½ÃÀÛµÇÁö ¾ÊÀº »óÅÂÀÔ´Ï´Ù",IDC_STATIC,10,\r
-                    10,186,8\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "¼­¹ö »óÅÂ"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    CONTROL         "Áö¿ª ¼¿",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP | WS_TABSTOP,20,20,50,8\r
-    CONTROL         "ÁöÁ¤µÈ ¼¿:",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10\r
-    CONTROL         "¸ðµç ¼¿",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_TABSTOP,21,69,45,10\r
-    CONTROL         "¼­¹ö »óŸ¦ Á¶»çÇÏÁö ¾ÊÀ½",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,112,10\r
-    PUSHBUTTON      "»óÅ ǥ½Ã",IDC_SHOWSTATUS,10,120,50,14\r
-    GROUPBOX        "¼¿",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,137,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,31,51,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "´Ý±â",IDCANCEL,65,120,50,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,120,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ÀÎÁõ"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "ÅäÅ« È®º¸",ID_GET_TOKENS,15,137,55,14\r
-    PUSHBUTTON      "ÅäÅ« ¹ö¸®±â",ID_DISCARD_TOKENS,80,137,55,14\r
-    PUSHBUTTON      "´Ý±â",IDCANCEL,145,137,55,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,215,137,55,14\r
-    LTEXT           "»ç¿ëÀÚ À̸§",IDC_STATIC,10,9,38,8\r
-    LTEXT           "¼¿ À̸§",IDC_STATIC,104,9,33,8\r
-    LTEXT           "¸¸±â",IDC_STATIC,222,9,32,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "ÅäÅ« È®º¸"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,70,35,14,WS_DISABLED\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,70,70,35,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,120,70,35,14\r
-    LTEXT           "À̸§:",IDC_STATIC,17,12,22,8\r
-    LTEXT           "¾ÏÈ£:",IDC_STATIC,17,32,20,8\r
-    LTEXT           "¼¿:",IDC_STATIC,24,52,15,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "ÅäÅ« ¹ö¸®±â"\r
-FONT 9, "±¼¸²", 0, 0, 0x1\r
-BEGIN\r
-    DEFPUSHBUTTON   "È®ÀÎ",IDOK,25,40,35,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,75,40,35,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,125,40,35,14\r
-    LTEXT           "¼¿:",IDC_STATIC,10,17,14,8\r
-    EDITTEXT        IDC_CELL_NAME,29,15,145,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¼­ºê¸¶¿îÆ®"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Ãß°¡ ",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "»èÁ¦",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "º¯°æ",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "¼­ºê¸¶¿îÆ®:",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "È®ÀÎ",IDOK,202,145,45,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¼­ºê¸¶¿îÆ® Ãß°¡"\r
-FONT 9, "±¼¸²"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "È®ÀÎ",IDOK,22,53,45,14\r
-    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,92,53,45,14\r
-    PUSHBUTTON      "µµ¿ò¸»",9,167,53,45,14\r
-    LTEXT           "°øÀ¯ À̸§:",IDC_STATIC,18,10,37,8\r
-    LTEXT           "°æ·Î À̸§:",IDC_STATIC,19,25,39,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 162\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 178\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 228\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "AFS·Î ·Î±×ÀΠ¶Ç´Â AFS¿¡¼­ ·Î±× ¾Æ¿ô"\r
-    ID_SERVER_STATUS        "¼­¹ö È®ÀÎ"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "Ȱ¼ºÈ­µÈ %o ÆÄÀÏÀ» Ç÷¯½¬ÇÒ ¼ö ¾ø½À´Ï´Ù"\r
-    IDS_FLUSH_ERROR         "%o ÆÄÀÏ Ç÷¯½¬ ¿À·ù: %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_FLUSH_OK            "¼±ÅõȠÆÄÀÏÀ» Ç÷¯½¬Çß½À´Ï´Ù"\r
-    IDS_CANT_GET_CELL       "¼¿ ÆÇº° ¿À·ù:"\r
-    IDS_FLUSH_VOLUME_ERROR  "%o¿¡ ´ëÇÑ º¼·ý Ç÷¯½¬ ¿À·ù:  %s"\r
-    IDS_FLUSH_VOLUME_OK     "º¼·ýÀÌ Ç÷¯½¬µÇ¾ú½À´Ï´Ù"\r
-    IDS_WHERE_IS            "%o ÆÄÀÏÀÌ %s È£½ºÆ®¿¡ ÀÖ½À´Ï´Ù"\r
-    IDS_CLEANACL_NOT_SUPPORTED \r
-                            "%o ÆÄÀÏ¿¡ ´ëÇÑ ACLÀ» Á¤¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. ACL Á¤¸®´Â DFS ¾×¼¼½º ¸ñ·Ï¿¡¼­ Áö¿øµÇÁö ¾Ê½À´Ï´Ù"\r
-    IDS_ACL_IS_FINE         "%o¿¡ ´ëÇÑ ¾×¼¼½º ¸ñ·ÏÀÌ Á¦´ë·Î ÀÛ¼ºµÇ¾ú½À´Ï´Ù"\r
-    IDS_CLEANACL_INVALID_ARG \r
-                            "%o ÆÄÀÏ¿¡ ´ëÇÑ ACLÀ» Á¤¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö, °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ ¾ø°Å³ª ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ »ç¿ëÀÚ°¡ ³Ê¹« ¸¹½À´Ï´Ù"\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "¸ðÈ£ÇÑ ACL ÀԷ Ç׸ñÀº »èÁ¦µÇ¾ú½À´Ï´Ù."\r
-    ID_SUBMOUNTS            "AFS ¼­ºê¸¶¿îÆ®¸¦ ÀÛ¼ºÇϰųª »èÁ¦ÇϽʽÿÀ"\r
-    IDS_GETRIGHTS_ERROR     "%o µð·ºÅ丮¿¡ ´ëÇÑ ¾×¼¼½º ¸ñ·ÏÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù:  %o"\r
-    IDS_DFSACL_ERROR        "ÀÌ ¸í·ÉÀ¸·Î DFS ACLÀ» ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù"\r
-    IDS_SAVE_ACL_ERROR      "%o¿¡ ´ëÇÑ ACLÀ» ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù:  %o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR \r
-                            "%o¿¡ ´ëÇÑ ACLÀ» ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö ¹× °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ AFS¿¡ ¾ø°Å³ª ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ »ç¿ëÀÚ°¡ ³Ê¹« ¸¹°Å³ª ¶Ç´Â ¾ø´Â »ç¿ëÀÚ¸¦ ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ Ãß°¡ÇÏ·Á°í Çß½À´Ï´Ù."\r
-    IDS_ACL_READ_ERROR      "%o¿¡ ´ëÇÑ ACLÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "ACLÀ» %o µð·ºÅ丮·Î º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù.  DFS ¾×¼¼½º ¸ñ·Ï¿¡¼­´Â ACL º¹»ç¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"\r
-    IDS_COPY_ACL_EINVAL_ERROR \r
-                            "ACLÀ» %o µð·ºÅ丮·Î º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö ¹× °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ AFS¿¡ ¾ø½À´Ï´Ù."\r
-    IDS_COPY_ACL_ERROR      "ACLÀ» %o¿¡ º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù:  %o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%oÀº(´Â) ¸¶¿îÆ® Æ÷ÀÎÆ®°¡ ¾Æ´Õ´Ï´Ù."\r
-    IDS_LIST_MOUNT_POINT_ERROR "¿À·ù:  %o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR \r
-                            "¸¶¿îÆ® Æ÷ÀÎÆ®´Â AFS ÆÄÀÏ ½Ã½ºÅÛ ³»¿¡ ÀÛ¼ºµÇ¾î¾ß ÇÕ´Ï´Ù"\r
-    IDS_MOUNT_POINT_ERROR   "¸¶¿îÆ® Æ÷ÀÎÆ® ÀÛ¼º ¿À·ù:  %o"\r
-    IDS_ERROR               "¿À·ù:  %o"\r
-    IDS_DELETED             "»èÁ¦µÇ¾ú½À´Ï´Ù"\r
-    IDS_SET_QUOTA_ERROR     "ÇÒ´ç·® ¼³Á¤ ¿À·ù:  %o"\r
-    ID_SUBMOUNTS_CREATE     "AFS ¼­ºê¸¶¿îÆ® ÀÛ¼º"\r
-    ID_SUBMOUNTS_EDIT       "AFS ¼­ºê¸¶¿îÆ® Ãß°¡, º¯°æ ¶Ç´Â »èÁ¦"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "%o ÆÄÀÏ ¼­¹ö ±â°èÀÇ »óÅ ȮÀΠ¿À·ù"\r
-    IDS_ALL_SERVERS_RUNNING "¸ðµç ¼­¹ö°¡ ½ÇÇà ÁßÀÔ´Ï´Ù."\r
-    IDS_CHECK_VOLUMES_OK    "¸ðµç º¼·ý ID/À̸§ ¸ÊÇÎÀÌ È®ÀεǾú½À´Ï´Ù."\r
-    IDS_CHECK_VOLUMES_ERROR "º¼·ý ID/À̸§ ¸ÊÇΠȮÀΠ¿À·ù:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE \r
-                            "¼±ÅÃÇÑ À̸§ÀÌ À̹̠»ç¿ë ÁßÀÔ´Ï´Ù.  ´Ù¸¥ À̸§À» ÀÔ·ÂÇϽʽÿÀ."\r
-    IDS_REALLY_DEL_MOUNT_POINTS "¼±ÅõȠ¸¶¿îÆ® Æ÷ÀÎÆ®¸¦ Á¦°ÅÇϽðڽÀ´Ï±î?"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "'%o' µð·ºÅ丮°¡ ¾ø½À´Ï´Ù."\r
-    IDS_CLEANACL_MSG        "¸ðÈ£ÇÑ ACLÀº »èÁ¦µË´Ï´Ù."\r
-    IDS_COPY_ACL_OK         "ACLÀÌ º¹»çµÇ¾ú½À´Ï´Ù."\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE \r
-                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. AFS ¼­ºñ½º°¡ ½ÃÀÛµÇÁö ¾Ê¾ÒÀ» ¼ö ÀÖ½À´Ï´Ù."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR \r
-                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý, ÄÚµå %d."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2 \r
-                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý, ¼­ºñ½º %s.%s.%s, ÄÚµå %d."\r
-    IDS_ENTER_QUOTA         "À¯È¿ÇÑ ÇÒ´ç·®À» ÀÔ·ÂÇϽʽÿÀ."\r
-    IDS_AUTHENTICATION_ITEM "ÀÎÁõ(&A)..."\r
-    IDS_ACLS_ITEM           "¾×¼¼½º Á¦¾î ¸ñ·Ï(&O)..."\r
-    IDS_VOL_PART_ITEM       "º¼·ý/ÆÄƼ¼Ç(&V)"\r
-    IDS_VOL_PART_PROPS_ITEM "Ư¼º(&P)"\r
-    IDS_VOL_PART_REFRESH_ITEM "À̸§/ID ¸ÊÇΠ»õ·Î °íħ(&R)"\r
-    IDS_MOUNT_POINT_ITEM    "¸¶¿îÆ® Æ÷ÀÎÆ®(&M)"\r
-    IDS_MP_SHOW_ITEM        "Ç¥½Ã(&S)..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS Å¬¶óÀ̾ðÆ®"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "Á¦°Å(&R)..."\r
-    IDS_MP_MAKE_ITEM        "ÀÛ¼º(&M)..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "ÆÄÀÏ/µð·ºÅ丮 Ç÷¯½¬(&F)"\r
-    IDS_FLUSH_VOLUME_ITEM   "º¼·ý Ç÷¯½¬(&U)"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "ÆÄÀÏ ¼­¹ö Ç¥½Ã(&F)..."\r
-    IDS_SHOW_CELL_ITEM      "¼¿ Ç¥½Ã(&C)..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "¼­¹ö »óÅ ǥ½Ã ..."\r
-    IDS_AFS_ITEM            "AFS(&A)"\r
-    IDS_SUBMOUNTS_ITEM      "¼­ºê¸¶¿îÆ®(&B)"\r
-    IDS_GET_SUBMT_INFO_ERROR \r
-                            "%o °øÀ¯ À̸§¿¡ ´ëÇÑ ¼­ºê¸¶¿îÆ® Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù."\r
-    IDS_REALLY_DELETE_SUBMT "%o °øÀ¯ À̸§À» »èÁ¦ÇϽðڽÀ´Ï±î?"\r
-    IDS_SUBMT_SAVE_FAILED   "¼­ºê¸¶¿îÆ® µ¥ÀÌÅͺ£À̽º¸¦ º¯°æÇϴ µ¥ ½ÇÆÐÇß½À´Ï´Ù."\r
-    IDS_SUBMOUNTS_CREATE_ITEM "Ãß°¡(&A)"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "ÆíÁý(&E)..."\r
-    IDS_EDIT_PATH_NAME      "°æ·Î À̸§ ÆíÁý"\r
-    IDS_SHOW_CELL           "¼¿ Ç¥½Ã"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "¼¿"\r
-    IDS_SHOW_FS             "ÆÄÀÏ ¼­¹ö Ç¥½Ã"\r
-    IDS_SHOW_FS_COLUMN      "ÆÄÀÏ ¼­¹ö"\r
-    IDS_REMOVE_MP           "¸¶¿îÆ® Æ÷ÀÎÆ® Á¦°Å"\r
-    IDS_REMOVE_MP_COLUMN    "°á°ú"\r
-END\r
-\r
-#endif    // Korean resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r
-#ifdef _WIN32\r
-LANGUAGE 18, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Korean resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
+#ifdef _WIN32
+LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 18, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE 
+BEGIN
+    MENUITEM "ÀÎÁõ...",                     IDM_AUTHENTICATION
+    MENUITEM "¾×¼¼½º Á¦¾î ¸ñ·Ï...",         IDM_ACL_SET
+    POPUP "º¼·ý/ÆÄƼ¼Ç(&V)"
+    BEGIN
+        MENUITEM "Ư¼º(&P)...",                 IDM_VOLUME_PROPERTIES
+        MENUITEM "À̸§/ID ¸ÊÇΠ»õ·Î °íħ(&R)",  IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "¸¶¿îÆ® Æ÷ÀÎÆ®(&M)"
+    BEGIN
+        MENUITEM "Ç¥½Ã(&S)...",                 IDM_MOUNTPOINT_SHOW
+        MENUITEM "Á¦°Å(&R)...",                 IDM_MOUNTPOINT_REMOVE
+        MENUITEM "ÀÛ¼º(&M)...",                 IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "ÆÄÀÏ/µð·ºÅ丮 Ç÷¯½¬(&F)",    IDM_FLUSH
+    MENUITEM "º¼·ý Ç÷¯½¬(&U)",             IDM_FLUSH_VOLUME
+    MENUITEM "ÆÄÀÏ ¼­¹ö Ç¥½Ã(&F)...",       IDM_SHOW_SERVER
+    MENUITEM "¼¿ Ç¥½Ã(&C)...",              IDM_SHOWCELL
+    MENUITEM "¼­¹ö »óÅ ǥ½Ã ...",          IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "º¼·ý Á¤º¸"
+FONT 9, "±¼¸²"
+BEGIN
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,60,150,50,14,WS_DISABLED
+    PUSHBUTTON      "µµ¿ò¸»",9,240,150,50,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,150,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",IDC_STATIC,10,9,56,8
+    LTEXT           "À̸§",IDC_STATIC,90,10,20,8
+    LTEXT           "ÇÒ´ç·®",IDC_STATIC,225,10,29,8
+    LTEXT           "»ç¿ë",IDC_STATIC,270,10,24,8
+    LTEXT           "»ç¿ë ¹éºÐÀ²",IDC_STATIC,298,10,38,8
+    LTEXT           "ID",IDC_STATIC,171,10,14,8
+    LTEXT           "»õ ÇÒ´ç·®:",IDC_STATIC,10,127,40,10
+    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "ÆÄƼ¼Ç Á¤º¸ Ç¥½Ã",IDC_PARTITION_INFO,205,125,69,14,
+                    WS_DISABLED
+    LTEXT           "KB",IDC_STATIC,118,127,25,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | 
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | 
+                    WS_DISABLED,106,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "AFS ACL ¼³Á¤"
+FONT 9, "±¼¸²"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,51,12,259,10
+    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - Àбâ",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,52,55,10
+    CONTROL         "w - ¾²±â",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,111,55,10
+    CONTROL         "l - Á¶È¸",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,66,55,10
+    CONTROL         "d - »èÁ¦",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,96,55,10
+    CONTROL         "i - »ðÀÔ",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,81,55,10
+    CONTROL         "k - Àá±Ý",IDC_LOCK,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,126,55,10
+    CONTROL         "a - °ü¸®ÀÚ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,141,55,10
+    PUSHBUTTON      "Ãß°¡(&A)...",IDC_ADD,270,45,45,14
+    PUSHBUTTON      "Á¦°Å(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED
+    PUSHBUTTON      "Á¤¸®(&C)",IDC_CLEAN,270,95,45,14
+    DEFPUSHBUTTON   "È®ÀÎ(&O)",IDOK,270,150,45,14
+    PUSHBUTTON      "Ãë¼Ò(&N)",IDCANCEL,270,175,45,14
+    PUSHBUTTON      "µµ¿ò¸»(&H)",9,270,201,45,14
+    LTEXT           "µð·ºÅ丮:",IDC_STATIC,15,12,41,10
+    GROUPBOX        "±ÇÇÑ",IDC_STATIC,195,41,65,115
+    LTEXT           "±àÁ¤",IDC_STATIC,10,30,23,8
+    LTEXT           "À̸§",IDC_COLUMN_3,69,38,20,8
+    LTEXT           "±ÇÇÑ",IDC_STATIC,10,38,37,8
+    LTEXT           "ºÎÁ¤",IDC_STATIC,10,125,30,8
+    LTEXT           "±ÇÇÑ",IDC_STATIC,10,133,38,8
+    LTEXT           "À̸§",IDC_COLUMN_4,69,133,20,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "º¹»ç(&P)...",IDC_COPY,270,120,45,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¸¶¿îÆ® Æ÷ÀÎÆ® ÀÛ¼º"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,81,50,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,150,81,50,14
+    LTEXT           "µð·ºÅ丮:",IDC_STATIC,5,12,30,10
+    LTEXT           "º¼·ý:",IDC_STATIC,12,26,25,10
+    LTEXT           "¼¿:",IDC_STATIC,19,41,15,10
+    GROUPBOX        "",IDC_STATIC,40,52,115,20
+    LTEXT           "¿É¼Ç:",IDC_STATIC,12,57,24,10
+    CONTROL         "ÀϹÝ",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,45,59,41,10
+    CONTROL         "Àбâ/¾²±â",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,50,
+                    10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ACL Ç׸ñ Ãß°¡"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_NAME,35,70,190,12,ES_AUTOHSCROLL
+    CONTROL         "r - Àбâ",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,15,45,10
+    CONTROL         "l - Á¶È¸",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,25,50,10
+    CONTROL         "i - »ðÀÔ",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,35,50,10
+    CONTROL         "d - »èÁ¦",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,45,50,10
+    CONTROL         "w - ¾²±â",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,15,50,10
+    CONTROL         "k - Àá±Ý",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,25,55,10
+    CONTROL         "a - °ü¸®ÀÚ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,35,60,10
+    CONTROL         "±àÁ¤ Ç׸ñ",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10
+    CONTROL         "ºÎÁ¤ Ç׸ñ",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,161,26,59,10
+    PUSHBUTTON      "È®ÀÎ",IDOK,22,90,50,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,92,90,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,162,90,50,14
+    LTEXT           "À̸§:",IDC_STATIC,10,72,20,8
+    GROUPBOX        "±ÇÇÑ",IDC_STATIC,10,5,135,55
+    GROUPBOX        "Ç׸ñ À¯Çü",IDC_STATIC,155,6,70,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ÆÄƼ¼Ç Á¤º¸"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,67,9,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,67,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,67,39,40,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "´Ý±â",IDOK,14,62,40,14
+    PUSHBUTTON      "µµ¿ò¸»",9,69,62,40,14
+    LTEXT           "»ç¿ë %:",IDC_STATIC,5,42,52,8
+    LTEXT           "»ç¿ë°¡´ÉÇÑ ºí·°:",IDC_STATIC,5,27,54,8
+    LTEXT           "ÃÑ Å©±â:",IDC_STATIC,7,12,36,8
+    LTEXT           "KB",IDC_STATIC,109,11,11,8
+    LTEXT           "K",IDC_STATIC,109,27,8,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ACL º¹»ç"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "ã¾Æº¸±â",IDC_BROWSE,195,25,35,15
+    CONTROL         "ÇöÀç ÀԷ Ç׸ñ Áö¿ì±â:",IDC_CLEAR,"Button",
+                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,82,10
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,170,65,50,14
+    LTEXT           "º¹»ç ¿øº»:",IDC_STATIC,13,13,35,8
+    LTEXT           "º¹»ç ´ë»ó:",IDC_STATIC,13,29,37,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "À§Ä¡"
+FONT 9, "±¼¸²"
+BEGIN
+    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",IDC_STATIC,10,10,59,8
+    LTEXT           "ÆÄÀÏ ¼­¹ö",IDC_STATIC,128,10,44,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "°á°ú"
+FONT 9, "±¼¸²"
+BEGIN
+    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "ÆÄÀÏ/µð·ºÅ丮",-1,10,10,45,8
+    LTEXT           "°á°ú",IDC_RESULTS_LABEL,128,10,44,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¸¶¿îÆ® Æ÷ÀÎÆ®"
+FONT 9, "±¼¸²"
+BEGIN
+    DEFPUSHBUTTON   "´Ý±â",IDOK,65,145,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "ÆÄÀÏ",IDC_STATIC,10,11,13,8
+    LTEXT           "º¼·ý",IDC_STATIC,75,11,27,8
+    LTEXT           "¼¿",IDC_STATIC,155,11,15,8
+    LTEXT           "À¯Çü",IDC_STATIC,230,11,20,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "¼­¹ö Áß´Ü"
+FONT 9, "±¼¸²"
+BEGIN
+    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "ÀÌ ¼­¹ö´Â ¾ÆÁ÷ ½ÃÀÛµÇÁö ¾ÊÀº »óÅÂÀÔ´Ï´Ù",IDC_STATIC,10,
+                    10,186,8
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "¼­¹ö »óÅÂ"
+FONT 9, "±¼¸²"
+BEGIN
+    CONTROL         "Áö¿ª ¼¿",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP | WS_TABSTOP,20,20,50,8
+    CONTROL         "ÁöÁ¤µÈ ¼¿:",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10
+    CONTROL         "¸ðµç ¼¿",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | 
+                    WS_TABSTOP,21,69,45,10
+    CONTROL         "¼­¹ö »óŸ¦ Á¶»çÇÏÁö ¾ÊÀ½",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,112,10
+    PUSHBUTTON      "»óÅ ǥ½Ã",IDC_SHOWSTATUS,10,120,50,14
+    GROUPBOX        "¼¿",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,137,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,31,51,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "´Ý±â",IDCANCEL,65,120,50,14
+    PUSHBUTTON      "µµ¿ò¸»",9,120,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ÀÎÁõ"
+FONT 9, "±¼¸²"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    PUSHBUTTON      "ÅäÅ« È®º¸",ID_GET_TOKENS,15,137,55,14
+    PUSHBUTTON      "ÅäÅ« ¹ö¸®±â",ID_DISCARD_TOKENS,80,137,55,14
+    PUSHBUTTON      "´Ý±â",IDCANCEL,145,137,55,14
+    PUSHBUTTON      "µµ¿ò¸»",9,215,137,55,14
+    LTEXT           "»ç¿ëÀÚ À̸§",IDC_STATIC,10,9,38,8
+    LTEXT           "¼¿ À̸§",IDC_STATIC,104,9,33,8
+    LTEXT           "¸¸±â",IDC_STATIC,222,9,32,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "ÅäÅ« È®º¸"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,20,70,35,14,WS_DISABLED
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,70,70,35,14
+    PUSHBUTTON      "µµ¿ò¸»",9,120,70,35,14
+    LTEXT           "À̸§:",IDC_STATIC,17,12,22,8
+    LTEXT           "¾ÏÈ£:",IDC_STATIC,17,32,20,8
+    LTEXT           "¼¿:",IDC_STATIC,24,52,15,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "ÅäÅ« ¹ö¸®±â"
+FONT 9, "±¼¸²", 0, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "È®ÀÎ",IDOK,25,40,35,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,75,40,35,14
+    PUSHBUTTON      "µµ¿ò¸»",9,125,40,35,14
+    LTEXT           "¼¿:",IDC_STATIC,10,17,14,8
+    EDITTEXT        IDC_CELL_NAME,29,15,145,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "¼­ºê¸¶¿îÆ®"
+FONT 9, "±¼¸²"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Ãß°¡ ",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "»èÁ¦",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "º¯°æ",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "¼­ºê¸¶¿îÆ®:",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "È®ÀÎ",IDOK,202,145,45,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¼­ºê¸¶¿îÆ® Ãß°¡"
+FONT 9, "±¼¸²"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "È®ÀÎ",IDOK,22,53,45,14
+    PUSHBUTTON      "Ãë¼Ò",IDCANCEL,92,53,45,14
+    PUSHBUTTON      "µµ¿ò¸»",9,167,53,45,14
+    LTEXT           "°øÀ¯ À̸§:",IDC_STATIC,18,10,37,8
+    LTEXT           "°æ·Î À̸§:",IDC_STATIC,19,25,39,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 162
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 178
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 228
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "AFS·Î ·Î±×ÀΠ¶Ç´Â AFS¿¡¼­ ·Î±× ¾Æ¿ô"
+    ID_SERVER_STATUS        "¼­¹ö È®ÀÎ"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "Ȱ¼ºÈ­µÈ %o ÆÄÀÏÀ» Ç÷¯½¬ÇÒ ¼ö ¾ø½À´Ï´Ù"
+    IDS_FLUSH_ERROR         "%o ÆÄÀÏ Ç÷¯½¬ ¿À·ù: %s"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_FLUSH_OK            "¼±ÅõȠÆÄÀÏÀ» Ç÷¯½¬Çß½À´Ï´Ù"
+    IDS_CANT_GET_CELL       "¼¿ ÆÇº° ¿À·ù:"
+    IDS_FLUSH_VOLUME_ERROR  "%o¿¡ ´ëÇÑ º¼·ý Ç÷¯½¬ ¿À·ù:  %s"
+    IDS_FLUSH_VOLUME_OK     "º¼·ýÀÌ Ç÷¯½¬µÇ¾ú½À´Ï´Ù"
+    IDS_WHERE_IS            "%o ÆÄÀÏÀÌ %s È£½ºÆ®¿¡ ÀÖ½À´Ï´Ù"
+    IDS_CLEANACL_NOT_SUPPORTED 
+                            "%o ÆÄÀÏ¿¡ ´ëÇÑ ACLÀ» Á¤¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. ACL Á¤¸®´Â DFS ¾×¼¼½º ¸ñ·Ï¿¡¼­ Áö¿øµÇÁö ¾Ê½À´Ï´Ù"
+    IDS_ACL_IS_FINE         "%o¿¡ ´ëÇÑ ¾×¼¼½º ¸ñ·ÏÀÌ Á¦´ë·Î ÀÛ¼ºµÇ¾ú½À´Ï´Ù"
+    IDS_CLEANACL_INVALID_ARG 
+                            "%o ÆÄÀÏ¿¡ ´ëÇÑ ACLÀ» Á¤¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö, °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ ¾ø°Å³ª ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ »ç¿ëÀÚ°¡ ³Ê¹« ¸¹½À´Ï´Ù"
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "¸ðÈ£ÇÑ ACL ÀԷ Ç׸ñÀº »èÁ¦µÇ¾ú½À´Ï´Ù."
+    ID_SUBMOUNTS            "AFS ¼­ºê¸¶¿îÆ®¸¦ ÀÛ¼ºÇϰųª »èÁ¦ÇϽʽÿÀ"
+    IDS_GETRIGHTS_ERROR     "%o µð·ºÅ丮¿¡ ´ëÇÑ ¾×¼¼½º ¸ñ·ÏÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù:  %o"
+    IDS_DFSACL_ERROR        "ÀÌ ¸í·ÉÀ¸·Î DFS ACLÀ» ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù"
+    IDS_SAVE_ACL_ERROR      "%o¿¡ ´ëÇÑ ACLÀ» ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù:  %o"
+    IDS_SAVE_ACL_EINVAL_ERROR 
+                            "%o¿¡ ´ëÇÑ ACLÀ» ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö ¹× °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ AFS¿¡ ¾ø°Å³ª ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ »ç¿ëÀÚ°¡ ³Ê¹« ¸¹°Å³ª ¶Ç´Â ¾ø´Â »ç¿ëÀÚ¸¦ ¾×¼¼½º Á¦¾î ¸ñ·Ï¿¡ Ãß°¡ÇÏ·Á°í Çß½À´Ï´Ù."
+    IDS_ACL_READ_ERROR      "%o¿¡ ´ëÇÑ ACLÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "ACLÀ» %o µð·ºÅ丮·Î º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù.  DFS ¾×¼¼½º ¸ñ·Ï¿¡¼­´Â ACL º¹»ç¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+    IDS_COPY_ACL_EINVAL_ERROR 
+                            "ACLÀ» %o µð·ºÅ丮·Î º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù. À¯È¿ÇÏÁö ¾ÊÀº Àμö ¹× °¡´ÉÇÑ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÄÀÏÀÌ AFS¿¡ ¾ø½À´Ï´Ù."
+    IDS_COPY_ACL_ERROR      "ACLÀ» %o¿¡ º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù:  %o"
+    IDS_NOT_MOUNT_POINT_ERROR "%oÀº(´Â) ¸¶¿îÆ® Æ÷ÀÎÆ®°¡ ¾Æ´Õ´Ï´Ù."
+    IDS_LIST_MOUNT_POINT_ERROR "¿À·ù:  %o"
+    IDS_MAKE_MP_NOT_AFS_ERROR 
+                            "¸¶¿îÆ® Æ÷ÀÎÆ®´Â AFS ÆÄÀÏ ½Ã½ºÅÛ ³»¿¡ ÀÛ¼ºµÇ¾î¾ß ÇÕ´Ï´Ù"
+    IDS_MOUNT_POINT_ERROR   "¸¶¿îÆ® Æ÷ÀÎÆ® ÀÛ¼º ¿À·ù:  %o"
+    IDS_ERROR               "¿À·ù:  %o"
+    IDS_DELETED             "»èÁ¦µÇ¾ú½À´Ï´Ù"
+    IDS_SET_QUOTA_ERROR     "ÇÒ´ç·® ¼³Á¤ ¿À·ù:  %o"
+    ID_SUBMOUNTS_CREATE     "AFS ¼­ºê¸¶¿îÆ® ÀÛ¼º"
+    ID_SUBMOUNTS_EDIT       "AFS ¼­ºê¸¶¿îÆ® Ãß°¡, º¯°æ ¶Ç´Â »èÁ¦"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "%o ÆÄÀÏ ¼­¹ö ±â°èÀÇ »óÅ ȮÀΠ¿À·ù"
+    IDS_ALL_SERVERS_RUNNING "¸ðµç ¼­¹ö°¡ ½ÇÇà ÁßÀÔ´Ï´Ù."
+    IDS_CHECK_VOLUMES_OK    "¸ðµç º¼·ý ID/À̸§ ¸ÊÇÎÀÌ È®ÀεǾú½À´Ï´Ù."
+    IDS_CHECK_VOLUMES_ERROR "º¼·ý ID/À̸§ ¸ÊÇΠȮÀΠ¿À·ù:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE 
+                            "¼±ÅÃÇÑ À̸§ÀÌ À̹̠»ç¿ë ÁßÀÔ´Ï´Ù.  ´Ù¸¥ À̸§À» ÀÔ·ÂÇϽʽÿÀ."
+    IDS_REALLY_DEL_MOUNT_POINTS "¼±ÅõȠ¸¶¿îÆ® Æ÷ÀÎÆ®¸¦ Á¦°ÅÇϽðڽÀ´Ï±î?"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "'%o' µð·ºÅ丮°¡ ¾ø½À´Ï´Ù."
+    IDS_CLEANACL_MSG        "¸ðÈ£ÇÑ ACLÀº »èÁ¦µË´Ï´Ù."
+    IDS_COPY_ACL_OK         "ACLÀÌ º¹»çµÇ¾ú½À´Ï´Ù."
+    IDS_GET_TOKENS_NO_AFS_SERVICE 
+                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. AFS ¼­ºñ½º°¡ ½ÃÀÛµÇÁö ¾Ê¾ÒÀ» ¼ö ÀÖ½À´Ï´Ù."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR 
+                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý, ÄÚµå %d."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2 
+                            "ÅäÅ« Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý, ¼­ºñ½º %s.%s.%s, ÄÚµå %d."
+    IDS_ENTER_QUOTA         "À¯È¿ÇÑ ÇÒ´ç·®À» ÀÔ·ÂÇϽʽÿÀ."
+    IDS_AUTHENTICATION_ITEM "ÀÎÁõ(&A)..."
+    IDS_ACLS_ITEM           "¾×¼¼½º Á¦¾î ¸ñ·Ï(&O)..."
+    IDS_VOL_PART_ITEM       "º¼·ý/ÆÄƼ¼Ç(&V)"
+    IDS_VOL_PART_PROPS_ITEM "Ư¼º(&P)"
+    IDS_VOL_PART_REFRESH_ITEM "À̸§/ID ¸ÊÇΠ»õ·Î °íħ(&R)"
+    IDS_MOUNT_POINT_ITEM    "¸¶¿îÆ® Æ÷ÀÎÆ®(&M)"
+    IDS_MP_SHOW_ITEM        "Ç¥½Ã(&S)..."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS Å¬¶óÀ̾ðÆ®"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MP_REMOVE_ITEM      "Á¦°Å(&R)..."
+    IDS_MP_MAKE_ITEM        "ÀÛ¼º(&M)..."
+    IDS_FLUSH_FILE_DIR_ITEM "ÆÄÀÏ/µð·ºÅ丮 Ç÷¯½¬(&F)"
+    IDS_FLUSH_VOLUME_ITEM   "º¼·ý Ç÷¯½¬(&U)"
+    IDS_SHOW_FILE_SERVERS_ITEM "ÆÄÀÏ ¼­¹ö Ç¥½Ã(&F)..."
+    IDS_SHOW_CELL_ITEM      "¼¿ Ç¥½Ã(&C)..."
+    IDS_SHOW_SERVER_STATUS_ITEM "¼­¹ö »óÅ ǥ½Ã ..."
+    IDS_AFS_ITEM            "AFS(&A)"
+    IDS_SUBMOUNTS_ITEM      "¼­ºê¸¶¿îÆ®(&B)"
+    IDS_GET_SUBMT_INFO_ERROR 
+                            "%o °øÀ¯ À̸§¿¡ ´ëÇÑ ¼­ºê¸¶¿îÆ® Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù."
+    IDS_REALLY_DELETE_SUBMT "%o °øÀ¯ À̸§À» »èÁ¦ÇϽðڽÀ´Ï±î?"
+    IDS_SUBMT_SAVE_FAILED   "¼­ºê¸¶¿îÆ® µ¥ÀÌÅͺ£À̽º¸¦ º¯°æÇϴ µ¥ ½ÇÆÐÇß½À´Ï´Ù."
+    IDS_SUBMOUNTS_CREATE_ITEM "Ãß°¡(&A)"
+    IDS_SUBMOUNTS_EDIT_ITEM "ÆíÁý(&E)..."
+    IDS_EDIT_PATH_NAME      "°æ·Î À̸§ ÆíÁý"
+    IDS_SHOW_CELL           "¼¿ Ç¥½Ã"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "¼¿"
+    IDS_SHOW_FS             "ÆÄÀÏ ¼­¹ö Ç¥½Ã"
+    IDS_SHOW_FS_COLUMN      "ÆÄÀÏ ¼­¹ö"
+    IDS_REMOVE_MP           "¸¶¿îÆ® Æ÷ÀÎÆ® Á¦°Å"
+    IDS_REMOVE_MP_COLUMN    "°á°ú"
+END
+
+#endif    // Korean resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
+#ifdef _WIN32
+LANGUAGE 18, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 3f54edaa0c527eb936d0a25dae08cdb611477562..663f02092dd00f581910502df312ca9800ac4186 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// English (U.S.) resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 9, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE \r
-BEGIN\r
-    MENUITEM "Autenticação...",             IDM_AUTHENTICATION\r
-    MENUITEM "Listas de Controle de Acesso...", IDM_ACL_SET\r
-    POPUP "&Volume/Partição"\r
-    BEGIN\r
-        MENUITEM "&Propriedades...",            IDM_VOLUME_PROPERTIES\r
-        MENUITEM "&Atualizar mapa de nome/ID",  IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "Ponto de &Montagem"\r
-    BEGIN\r
-        MENUITEM "E&xibir...",                  IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "&Remover...",                 IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "&Fazer...",                   IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "&Esvaziar Arquivo/Dir",       IDM_FLUSH\r
-    MENUITEM "Esvaziar Vol&ume",            IDM_FLUSH_VOLUME\r
-    MENUITEM "Mostrar Servidores de Ar&quivos...", IDM_SHOW_SERVER\r
-    MENUITEM "Mostrar &Célula...",          IDM_SHOWCELL\r
-    MENUITEM "Mostrar &Status do Servidor...", IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "Informações do Volume"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "OK",IDOK,60,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Ajuda",9,240,150,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,150,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Arquivo/Diretório",IDC_STATIC,10,10,55,10\r
-    LTEXT           "Nome",IDC_STATIC,90,10,25,8\r
-    LTEXT           "Quota",IDC_STATIC,225,10,19,8\r
-    LTEXT           "Usado",IDC_STATIC,270,10,24,8\r
-    LTEXT           "%Usada",IDC_STATIC,305,10,29,8\r
-    LTEXT           "ID",IDC_STATIC,175,10,10,8\r
-    LTEXT           "Nova Quota:",IDC_STATIC,10,127,44,10\r
-    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "Mostrar Informações da Partição",IDC_PARTITION_INFO,205,\r
-                    125,107,14,WS_DISABLED\r
-    LTEXT           "KBytes",IDC_STATIC,118,127,25,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | \r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | \r
-                    WS_DISABLED,106,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Definir ACL do AFS"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,51,12,259,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - Ler",IDC_READ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
-                    200,52,55,10\r
-    CONTROL         "w - Gravar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,111,55,10\r
-    CONTROL         "l - Procurar",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,66,55,10\r
-    CONTROL         "d - Excluir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,96,55,10\r
-    CONTROL         "i - Inserir",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,81,55,10\r
-    CONTROL         "k - Bloquear",IDC_LOCK,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,126,55,10\r
-    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,200,141,59,10\r
-    PUSHBUTTON      "&Incluir...",IDC_ADD,270,45,45,14\r
-    PUSHBUTTON      "&Remover",IDC_REMOVE,270,70,45,14,WS_DISABLED\r
-    PUSHBUTTON      "&Limpar",IDC_CLEAN,270,95,45,14\r
-    DEFPUSHBUTTON   "&OK",IDOK,270,150,45,14\r
-    PUSHBUTTON      "Ca&ncelar",IDCANCEL,270,175,45,14\r
-    PUSHBUTTON      "&Ajuda",9,270,201,45,14\r
-    LTEXT           "Diretório:",IDC_STATIC,15,12,30,10\r
-    GROUPBOX        "Permissões",IDC_STATIC,195,41,68,115\r
-    LTEXT           "Permissões",IDC_STATIC,10,30,41,8\r
-    LTEXT           "Nome",IDC_COLUMN_3,69,38,20,8\r
-    LTEXT           "Normais",IDC_STATIC,10,38,37,8\r
-    LTEXT           "Permissões",IDC_STATIC,10,125,42,8\r
-    LTEXT           "Negativas",IDC_STATIC,10,133,38,8\r
-    LTEXT           "Nome",IDC_COLUMN_4,69,133,20,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "Co&piar...",IDC_COPY,270,120,45,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Fazer Ponto de Montagem"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "OK",IDOK,20,81,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "Ajuda",9,150,81,50,14\r
-    LTEXT           "Diretório:",IDC_STATIC,5,12,30,10\r
-    LTEXT           "Volume:",IDC_STATIC,5,28,25,10\r
-    LTEXT           "Célula:",IDC_STATIC,5,42,26,10\r
-    GROUPBOX        "",IDC_STATIC,41,52,137,20\r
-    LTEXT           "Opções:",IDC_STATIC,9,59,25,10\r
-    CONTROL         "Regular",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,47,59,41,10\r
-    CONTROL         "Leitura/Gravação",IDC_RW,"Button",BS_AUTORADIOBUTTON,\r
-                    102,59,74,10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Incluir Entrada na ACL"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,35,70,190,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - Ler",IDC_READ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
-                    20,15,45,10\r
-    CONTROL         "l - Procurar",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,25,50,10\r
-    CONTROL         "i - Inserir",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,35,50,10\r
-    CONTROL         "d - Excluir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,45,50,10\r
-    CONTROL         "w - Gravar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,15,50,10\r
-    CONTROL         "k - Bloquear",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,25,55,10\r
-    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,80,35,60,10\r
-    CONTROL         "Entrada Normal",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,155,14,64,10\r
-    CONTROL         "Entrada negativa",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,155,24,69,10\r
-    PUSHBUTTON      "OK",IDOK,22,90,50,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,92,90,50,14\r
-    PUSHBUTTON      "Ajuda",9,162,90,50,14\r
-    LTEXT           "Nome:",IDC_STATIC,10,72,20,8\r
-    GROUPBOX        "Permissões",IDC_STATIC,10,5,135,55\r
-    GROUPBOX        "Tipo de Entrada",IDC_STATIC,150,5,77,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 133, 82\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Informações da Partição"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,61,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,61,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,61,40,40,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "Fechar",IDOK,14,62,40,14\r
-    PUSHBUTTON      "Ajuda",9,69,62,40,14\r
-    LTEXT           "% Usada:",IDC_STATIC,5,42,37,8\r
-    LTEXT           "Blocos Livres:",IDC_STATIC,5,27,50,8\r
-    LTEXT           "Tamanho Total:",IDC_STATIC,5,12,52,8\r
-    LTEXT           "K Bytes",IDC_STATIC,103,12,25,8\r
-    LTEXT           "K Bytes",IDC_STATIC,103,27,25,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Copiar da ACL"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Procurar",IDC_BROWSE,195,25,35,15\r
-    CONTROL         "Limpar Entradas Atuais:",IDC_CLEAR,"Button",\r
-                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,95,10\r
-    DEFPUSHBUTTON   "OK",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "Ajuda",9,170,65,50,14\r
-    LTEXT           "Copiar De:",IDC_STATIC,13,12,35,8\r
-    LTEXT           "Copiar Para:",IDC_STATIC,13,29,43,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Onde Está"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ajuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Arquivo/Diretório",IDC_STATIC,10,10,62,8\r
-    LTEXT           "Servidor(es) de Arquivos",IDC_STATIC,128,10,44,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Resultados"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ajuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Arquivo/Diretório",-1,10,10,60,8\r
-    LTEXT           "Resultado",IDC_RESULTS_LABEL,128,10,44,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Pontos de Montagem"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14\r
-    PUSHBUTTON      "Ajuda",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Arquivo",IDC_STATIC,10,11,30,8\r
-    LTEXT           "Volume",IDC_STATIC,75,11,27,8\r
-    LTEXT           "Célula",IDC_STATIC,155,11,27,8\r
-    LTEXT           "Tipo",IDC_STATIC,230,11,20,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Servidores Inoperantes"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "Estes servidores ainda estão inoperantes:",IDC_STATIC,\r
-                    10,10,136,8\r
-    DEFPUSHBUTTON   "OK",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "Status do Servidor"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    CONTROL         "Célula Local",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP | WS_TABSTOP,20,20,61,8\r
-    CONTROL         "Célula Especificada:",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,82,10\r
-    CONTROL         "Todas as Células",IDC_ALL_CELLS,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,65,71,10\r
-    CONTROL         "Não sondar servidores",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,86,10\r
-    PUSHBUTTON      "Mostrar Status",IDC_SHOWSTATUS,10,120,50,14\r
-    GROUPBOX        "Célula",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,95,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Fechar",IDCANCEL,65,120,50,14\r
-    PUSHBUTTON      "Ajuda",9,120,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Autenticação"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "Obter Tokens",ID_GET_TOKENS,15,137,55,14\r
-    PUSHBUTTON      "Descartar Tokens",ID_DISCARD_TOKENS,79,137,62,14\r
-    PUSHBUTTON      "Fechar",IDCANCEL,150,137,55,14\r
-    PUSHBUTTON      "Ajuda",9,214,137,55,14\r
-    LTEXT           "Nome do Usuário",IDC_STATIC,10,9,61,8\r
-    LTEXT           "Nome da Célula",IDC_STATIC,104,9,57,8\r
-    LTEXT           "Vencimento",IDC_STATIC,222,9,38,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "Obter Tokens"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "OK",IDOK,20,70,33,14,WS_DISABLED\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,70,70,33,14\r
-    PUSHBUTTON      "Ajuda",9,120,70,33,14\r
-    LTEXT           "Nome:",IDC_STATIC,13,12,22,8\r
-    LTEXT           "Senha:",IDC_STATIC,13,32,34,8\r
-    LTEXT           "Célula:",IDC_STATIC,13,52,24,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 189, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "Descartar Tokens"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
-BEGIN\r
-    DEFPUSHBUTTON   "OK",IDOK,29,40,35,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,79,40,35,14\r
-    PUSHBUTTON      "Ajuda",9,129,40,35,14\r
-    LTEXT           "Célula:",IDC_STATIC,10,17,24,8\r
-    EDITTEXT        IDC_CELL_NAME,34,15,145,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Submontagens"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Incluir ",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "Excluir",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "Alterar",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "Submontagens:",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "OK",IDOK,202,145,45,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 267, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Incluir Submontagem"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,97,8,163,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,97,23,163,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "OK",IDOK,24,53,45,14\r
-    PUSHBUTTON      "Cancelar",IDCANCEL,111,53,45,14\r
-    PUSHBUTTON      "Ajuda",9,198,53,45,14\r
-    LTEXT           "Nome do Compartilhamento:",IDC_STATIC,4,10,90,8\r
-    LTEXT           "Nome do Caminho:",IDC_STATIC,4,25,61,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 162\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 182\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 260\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "Entrar ou sair do AFS"\r
-    ID_SERVER_STATUS        "Verificar Servidores"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "Não é possível esvaziar o arquivo ativo %o"\r
-    IDS_FLUSH_ERROR         "Erro ao esvaziar o arquivo %o:  %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_FLUSH_OK            "Arquivo(s) selecionado(s) esvaziado(s) com êxito"\r
-    IDS_CANT_GET_CELL       "Erro ao determinar a célula:"\r
-    IDS_FLUSH_VOLUME_ERROR  "Erro ao esvaziar volume para %o:  %s"\r
-    IDS_FLUSH_VOLUME_OK     "Volume esvaziado com êxito"\r
-    IDS_WHERE_IS            "O arquivo %o está no host %s"\r
-    IDS_CLEANACL_NOT_SUPPORTED \r
-                            "Não é possível limpar a ACL para o arquivo %o:  clean Acl não é suportado para listas de acesso DFS"\r
-    IDS_ACL_IS_FINE         "Lista de acesso para %o está boa"\r
-    IDS_CLEANACL_INVALID_ARG \r
-                            "Não é possível limpar a ACL para o arquivo %o:  Argumento inválido, motivos possíveis incluem:  o arquivo não está com erro ou existem muitos usuários na lista de controle de acesso"\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "Entradas obsoletas na ACL foram excluídas."\r
-    ID_SUBMOUNTS            "Criar ou excluir uma submontagem AFS"\r
-    IDS_GETRIGHTS_ERROR     "Incapaz de ler a lista de acesso para o diretório %o:  %o"\r
-    IDS_DFSACL_ERROR        "Não é possível editar ACLs do DFS com este comando"\r
-    IDS_SAVE_ACL_ERROR      "Não é possível salvar a ACL para %o:  %o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR \r
-                            "Não é possível salvar a ACL para %o:  Argumento inválido, motivos possíveis incluem:  o arquivo não está na AFS, muitos usuários na lista de controle do acesso, tentativa de incluir usuário não existente na lista de controle de acesso"\r
-    IDS_ACL_READ_ERROR      "Não é possível ler a ACL para %o:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "Não é possível copiar a ACL para o diretório %o:  a função copiar a ACL não é suportada para listas de acesso DFS"\r
-    IDS_COPY_ACL_EINVAL_ERROR \r
-                            "Não é possível copiar a ACL para o diretório %o:  Argumento inválido, motivos possíveis incluem:  Arquivo não está na AFS."\r
-    IDS_COPY_ACL_ERROR      "Não é possível copiar a ACL para %o:  %o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%o não é um ponto de montagem."\r
-    IDS_LIST_MOUNT_POINT_ERROR "Erro:  %o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR \r
-                            "Pontos de montagem devem ser criados no sistema de arquivos do AFS"\r
-    IDS_MOUNT_POINT_ERROR   "Erro ao criar ponto de montagem:  %o"\r
-    IDS_ERROR               "Erro:  %o"\r
-    IDS_DELETED             "Excluído com êxito"\r
-    IDS_SET_QUOTA_ERROR     "Erro ao definir quota:  %o"\r
-    ID_SUBMOUNTS_CREATE     "Criar uma Submontagem AFS"\r
-    ID_SUBMOUNTS_EDIT       "Incluir, alterar ou excluir submontagens do AFS"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "Erro ao verificar status de máquinas de servidor de arquivos:  %o"\r
-    IDS_ALL_SERVERS_RUNNING "Todos os servidores estão em execução."\r
-    IDS_CHECK_VOLUMES_OK    "Todos os mapeamentos de ID/nome de volume verificados."\r
-    IDS_CHECK_VOLUMES_ERROR "Erro ao verificar mapeamentos de ID/nome de volume:  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE \r
-                            "O nome escolhido já está em uso. Digite um nome diferente."\r
-    IDS_REALLY_DEL_MOUNT_POINTS \r
-                            "Tem certeza de que deseja remover o(s) ponto(s) de montagem selecionado(s)?"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "O diretório '%o' não existe."\r
-    IDS_CLEANACL_MSG        "As ACLs obsoletas serão excluídas!"\r
-    IDS_COPY_ACL_OK         "ACL copiada com êxito."\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE \r
-                            "Não é possível ler as informações de token:  o serviço do AFS pode não ter iniciado."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR \r
-                            "Não é possível ler as informações de token:  Erro inesperado, código %d."\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2 \r
-                            "Não é possível ler as informações de token:  Erro inesperado, serviço %s.%s.%s, código %d."\r
-    IDS_ENTER_QUOTA         "Digite uma quota válida."\r
-    IDS_AUTHENTICATION_ITEM "&Autenticação..."\r
-    IDS_ACLS_ITEM           "&Listas de Controle de Acesso..."\r
-    IDS_VOL_PART_ITEM       "&Volume/Partição"\r
-    IDS_VOL_PART_PROPS_ITEM "&Propriedades"\r
-    IDS_VOL_PART_REFRESH_ITEM "&Atualizar mapa de nome/ID"\r
-    IDS_MOUNT_POINT_ITEM    "Ponto de &Montagem"\r
-    IDS_MP_SHOW_ITEM        "E&xibir..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS Client"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "&Remover..."\r
-    IDS_MP_MAKE_ITEM        "&Fazer..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "&Esvaziar Arquivo/Dir"\r
-    IDS_FLUSH_VOLUME_ITEM   "Esvaziar Vol&ume"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "Mostrar Servidores de Ar&quivos..."\r
-    IDS_SHOW_CELL_ITEM      "Mostrar &Célula..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "Mostrar &Status do Servidor..."\r
-    IDS_AFS_ITEM            "&AFS"\r
-    IDS_SUBMOUNTS_ITEM      "Su&bmontagens"\r
-    IDS_GET_SUBMT_INFO_ERROR \r
-                            "Incapaz de ler as informações de submontagem para o sharename %o."\r
-    IDS_REALLY_DELETE_SUBMT "Excluir sharename %o?"\r
-    IDS_SUBMT_SAVE_FAILED   "Falha nas alterações ao banco de dados de submontagem."\r
-    IDS_SUBMOUNTS_CREATE_ITEM "&Incluir"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "&Editar..."\r
-    IDS_EDIT_PATH_NAME      "Editar Nome do Caminho"\r
-    IDS_SHOW_CELL           "Mostrar Célula"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "Célula"\r
-    IDS_SHOW_FS             "Mostrar Servidores de Arquivos"\r
-    IDS_SHOW_FS_COLUMN      "Servidor(es) de Arquivos"\r
-    IDS_REMOVE_MP           "Remover Pontos de Montagem"\r
-    IDS_REMOVE_MP_COLUMN    "Resultado"\r
-END\r
-\r
-#endif    // English (U.S.) resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE 9, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE 
+BEGIN
+    MENUITEM "Autenticação...",             IDM_AUTHENTICATION
+    MENUITEM "Listas de Controle de Acesso...", IDM_ACL_SET
+    POPUP "&Volume/Partição"
+    BEGIN
+        MENUITEM "&Propriedades...",            IDM_VOLUME_PROPERTIES
+        MENUITEM "&Atualizar mapa de nome/ID",  IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "Ponto de &Montagem"
+    BEGIN
+        MENUITEM "E&xibir...",                  IDM_MOUNTPOINT_SHOW
+        MENUITEM "&Remover...",                 IDM_MOUNTPOINT_REMOVE
+        MENUITEM "&Fazer...",                   IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "&Esvaziar Arquivo/Dir",       IDM_FLUSH
+    MENUITEM "Esvaziar Vol&ume",            IDM_FLUSH_VOLUME
+    MENUITEM "Mostrar Servidores de Ar&quivos...", IDM_SHOW_SERVER
+    MENUITEM "Mostrar &Célula...",          IDM_SHOWCELL
+    MENUITEM "Mostrar &Status do Servidor...", IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Informações do Volume"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,60,150,50,14,WS_DISABLED
+    PUSHBUTTON      "Ajuda",9,240,150,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,150,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Arquivo/Diretório",IDC_STATIC,10,10,55,10
+    LTEXT           "Nome",IDC_STATIC,90,10,25,8
+    LTEXT           "Quota",IDC_STATIC,225,10,19,8
+    LTEXT           "Usado",IDC_STATIC,270,10,24,8
+    LTEXT           "%Usada",IDC_STATIC,305,10,29,8
+    LTEXT           "ID",IDC_STATIC,175,10,10,8
+    LTEXT           "Nova Quota:",IDC_STATIC,10,127,44,10
+    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "Mostrar Informações da Partição",IDC_PARTITION_INFO,205,
+                    125,107,14,WS_DISABLED
+    LTEXT           "KBytes",IDC_STATIC,118,127,25,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | 
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | 
+                    WS_DISABLED,106,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Definir ACL do AFS"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,51,12,259,10
+    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - Ler",IDC_READ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
+                    200,52,55,10
+    CONTROL         "w - Gravar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,111,55,10
+    CONTROL         "l - Procurar",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,66,55,10
+    CONTROL         "d - Excluir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,96,55,10
+    CONTROL         "i - Inserir",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,81,55,10
+    CONTROL         "k - Bloquear",IDC_LOCK,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,126,55,10
+    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,200,141,59,10
+    PUSHBUTTON      "&Incluir...",IDC_ADD,270,45,45,14
+    PUSHBUTTON      "&Remover",IDC_REMOVE,270,70,45,14,WS_DISABLED
+    PUSHBUTTON      "&Limpar",IDC_CLEAN,270,95,45,14
+    DEFPUSHBUTTON   "&OK",IDOK,270,150,45,14
+    PUSHBUTTON      "Ca&ncelar",IDCANCEL,270,175,45,14
+    PUSHBUTTON      "&Ajuda",9,270,201,45,14
+    LTEXT           "Diretório:",IDC_STATIC,15,12,30,10
+    GROUPBOX        "Permissões",IDC_STATIC,195,41,68,115
+    LTEXT           "Permissões",IDC_STATIC,10,30,41,8
+    LTEXT           "Nome",IDC_COLUMN_3,69,38,20,8
+    LTEXT           "Normais",IDC_STATIC,10,38,37,8
+    LTEXT           "Permissões",IDC_STATIC,10,125,42,8
+    LTEXT           "Negativas",IDC_STATIC,10,133,38,8
+    LTEXT           "Nome",IDC_COLUMN_4,69,133,20,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "Co&piar...",IDC_COPY,270,120,45,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fazer Ponto de Montagem"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "OK",IDOK,20,81,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "Ajuda",9,150,81,50,14
+    LTEXT           "Diretório:",IDC_STATIC,5,12,30,10
+    LTEXT           "Volume:",IDC_STATIC,5,28,25,10
+    LTEXT           "Célula:",IDC_STATIC,5,42,26,10
+    GROUPBOX        "",IDC_STATIC,41,52,137,20
+    LTEXT           "Opções:",IDC_STATIC,9,59,25,10
+    CONTROL         "Regular",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,47,59,41,10
+    CONTROL         "Leitura/Gravação",IDC_RW,"Button",BS_AUTORADIOBUTTON,
+                    102,59,74,10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Incluir Entrada na ACL"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_NAME,35,70,190,12,ES_AUTOHSCROLL
+    CONTROL         "r - Ler",IDC_READ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
+                    20,15,45,10
+    CONTROL         "l - Procurar",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,25,50,10
+    CONTROL         "i - Inserir",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,35,50,10
+    CONTROL         "d - Excluir",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,45,50,10
+    CONTROL         "w - Gravar",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,15,50,10
+    CONTROL         "k - Bloquear",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,25,55,10
+    CONTROL         "a - Administrar",IDC_ADMINISTER,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,80,35,60,10
+    CONTROL         "Entrada Normal",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,155,14,64,10
+    CONTROL         "Entrada negativa",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,155,24,69,10
+    PUSHBUTTON      "OK",IDOK,22,90,50,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,92,90,50,14
+    PUSHBUTTON      "Ajuda",9,162,90,50,14
+    LTEXT           "Nome:",IDC_STATIC,10,72,20,8
+    GROUPBOX        "Permissões",IDC_STATIC,10,5,135,55
+    GROUPBOX        "Tipo de Entrada",IDC_STATIC,150,5,77,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 133, 82
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Informações da Partição"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,61,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,61,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,61,40,40,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "Fechar",IDOK,14,62,40,14
+    PUSHBUTTON      "Ajuda",9,69,62,40,14
+    LTEXT           "% Usada:",IDC_STATIC,5,42,37,8
+    LTEXT           "Blocos Livres:",IDC_STATIC,5,27,50,8
+    LTEXT           "Tamanho Total:",IDC_STATIC,5,12,52,8
+    LTEXT           "K Bytes",IDC_STATIC,103,12,25,8
+    LTEXT           "K Bytes",IDC_STATIC,103,27,25,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Copiar da ACL"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Procurar",IDC_BROWSE,195,25,35,15
+    CONTROL         "Limpar Entradas Atuais:",IDC_CLEAR,"Button",
+                    BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,10,46,95,10
+    DEFPUSHBUTTON   "OK",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "Cancelar",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "Ajuda",9,170,65,50,14
+    LTEXT           "Copiar De:",IDC_STATIC,13,12,35,8
+    LTEXT           "Copiar Para:",IDC_STATIC,13,29,43,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Onde Está"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ajuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Arquivo/Diretório",IDC_STATIC,10,10,62,8
+    LTEXT           "Servidor(es) de Arquivos",IDC_STATIC,128,10,44,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Resultados"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ajuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Arquivo/Diretório",-1,10,10,60,8
+    LTEXT           "Resultado",IDC_RESULTS_LABEL,128,10,44,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Pontos de Montagem"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Fechar",IDOK,65,145,50,14
+    PUSHBUTTON      "Ajuda",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Arquivo",IDC_STATIC,10,11,30,8
+    LTEXT           "Volume",IDC_STATIC,75,11,27,8
+    LTEXT           "Célula",IDC_STATIC,155,11,27,8
+    LTEXT           "Tipo",IDC_STATIC,230,11,20,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Servidores Inoperantes"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "Estes servidores ainda estão inoperantes:",IDC_STATIC,
+                    10,10,136,8
+    DEFPUSHBUTTON   "OK",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Status do Servidor"
+FONT 8, "MS Sans Serif"
+BEGIN
+    CONTROL         "Célula Local",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP | WS_TABSTOP,20,20,61,8
+    CONTROL         "Célula Especificada:",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,82,10
+    CONTROL         "Todas as Células",IDC_ALL_CELLS,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,65,71,10
+    CONTROL         "Não sondar servidores",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,86,10
+    PUSHBUTTON      "Mostrar Status",IDC_SHOWSTATUS,10,120,50,14
+    GROUPBOX        "Célula",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,95,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Fechar",IDCANCEL,65,120,50,14
+    PUSHBUTTON      "Ajuda",9,120,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Autenticação"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    PUSHBUTTON      "Obter Tokens",ID_GET_TOKENS,15,137,55,14
+    PUSHBUTTON      "Descartar Tokens",ID_DISCARD_TOKENS,79,137,62,14
+    PUSHBUTTON      "Fechar",IDCANCEL,150,137,55,14
+    PUSHBUTTON      "Ajuda",9,214,137,55,14
+    LTEXT           "Nome do Usuário",IDC_STATIC,10,9,61,8
+    LTEXT           "Nome da Célula",IDC_STATIC,104,9,57,8
+    LTEXT           "Vencimento",IDC_STATIC,222,9,38,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "Obter Tokens"
+FONT 8, "MS Sans Serif", 0, 0, 0x1
+BEGIN
+    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "OK",IDOK,20,70,33,14,WS_DISABLED
+    PUSHBUTTON      "Cancelar",IDCANCEL,70,70,33,14
+    PUSHBUTTON      "Ajuda",9,120,70,33,14
+    LTEXT           "Nome:",IDC_STATIC,13,12,22,8
+    LTEXT           "Senha:",IDC_STATIC,13,32,34,8
+    LTEXT           "Célula:",IDC_STATIC,13,52,24,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 189, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "Descartar Tokens"
+FONT 8, "MS Sans Serif", 0, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,29,40,35,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,79,40,35,14
+    PUSHBUTTON      "Ajuda",9,129,40,35,14
+    LTEXT           "Célula:",IDC_STATIC,10,17,24,8
+    EDITTEXT        IDC_CELL_NAME,34,15,145,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Submontagens"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Incluir ",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "Excluir",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "Alterar",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "Submontagens:",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "OK",IDOK,202,145,45,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 267, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Incluir Submontagem"
+FONT 8, "MS Sans Serif"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,97,8,163,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,97,23,163,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "OK",IDOK,24,53,45,14
+    PUSHBUTTON      "Cancelar",IDCANCEL,111,53,45,14
+    PUSHBUTTON      "Ajuda",9,198,53,45,14
+    LTEXT           "Nome do Compartilhamento:",IDC_STATIC,4,10,90,8
+    LTEXT           "Nome do Caminho:",IDC_STATIC,4,25,61,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 162
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 182
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 260
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "Entrar ou sair do AFS"
+    ID_SERVER_STATUS        "Verificar Servidores"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "Não é possível esvaziar o arquivo ativo %o"
+    IDS_FLUSH_ERROR         "Erro ao esvaziar o arquivo %o:  %s"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_FLUSH_OK            "Arquivo(s) selecionado(s) esvaziado(s) com êxito"
+    IDS_CANT_GET_CELL       "Erro ao determinar a célula:"
+    IDS_FLUSH_VOLUME_ERROR  "Erro ao esvaziar volume para %o:  %s"
+    IDS_FLUSH_VOLUME_OK     "Volume esvaziado com êxito"
+    IDS_WHERE_IS            "O arquivo %o está no host %s"
+    IDS_CLEANACL_NOT_SUPPORTED 
+                            "Não é possível limpar a ACL para o arquivo %o:  clean Acl não é suportado para listas de acesso DFS"
+    IDS_ACL_IS_FINE         "Lista de acesso para %o está boa"
+    IDS_CLEANACL_INVALID_ARG 
+                            "Não é possível limpar a ACL para o arquivo %o:  Argumento inválido, motivos possíveis incluem:  o arquivo não está com erro ou existem muitos usuários na lista de controle de acesso"
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "Entradas obsoletas na ACL foram excluídas."
+    ID_SUBMOUNTS            "Criar ou excluir uma submontagem AFS"
+    IDS_GETRIGHTS_ERROR     "Incapaz de ler a lista de acesso para o diretório %o:  %o"
+    IDS_DFSACL_ERROR        "Não é possível editar ACLs do DFS com este comando"
+    IDS_SAVE_ACL_ERROR      "Não é possível salvar a ACL para %o:  %o"
+    IDS_SAVE_ACL_EINVAL_ERROR 
+                            "Não é possível salvar a ACL para %o:  Argumento inválido, motivos possíveis incluem:  o arquivo não está na AFS, muitos usuários na lista de controle do acesso, tentativa de incluir usuário não existente na lista de controle de acesso"
+    IDS_ACL_READ_ERROR      "Não é possível ler a ACL para %o:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "Não é possível copiar a ACL para o diretório %o:  a função copiar a ACL não é suportada para listas de acesso DFS"
+    IDS_COPY_ACL_EINVAL_ERROR 
+                            "Não é possível copiar a ACL para o diretório %o:  Argumento inválido, motivos possíveis incluem:  Arquivo não está na AFS."
+    IDS_COPY_ACL_ERROR      "Não é possível copiar a ACL para %o:  %o"
+    IDS_NOT_MOUNT_POINT_ERROR "%o não é um ponto de montagem."
+    IDS_LIST_MOUNT_POINT_ERROR "Erro:  %o"
+    IDS_MAKE_MP_NOT_AFS_ERROR 
+                            "Pontos de montagem devem ser criados no sistema de arquivos do AFS"
+    IDS_MOUNT_POINT_ERROR   "Erro ao criar ponto de montagem:  %o"
+    IDS_ERROR               "Erro:  %o"
+    IDS_DELETED             "Excluído com êxito"
+    IDS_SET_QUOTA_ERROR     "Erro ao definir quota:  %o"
+    ID_SUBMOUNTS_CREATE     "Criar uma Submontagem AFS"
+    ID_SUBMOUNTS_EDIT       "Incluir, alterar ou excluir submontagens do AFS"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "Erro ao verificar status de máquinas de servidor de arquivos:  %o"
+    IDS_ALL_SERVERS_RUNNING "Todos os servidores estão em execução."
+    IDS_CHECK_VOLUMES_OK    "Todos os mapeamentos de ID/nome de volume verificados."
+    IDS_CHECK_VOLUMES_ERROR "Erro ao verificar mapeamentos de ID/nome de volume:  %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE 
+                            "O nome escolhido já está em uso. Digite um nome diferente."
+    IDS_REALLY_DEL_MOUNT_POINTS 
+                            "Tem certeza de que deseja remover o(s) ponto(s) de montagem selecionado(s)?"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "O diretório '%o' não existe."
+    IDS_CLEANACL_MSG        "As ACLs obsoletas serão excluídas!"
+    IDS_COPY_ACL_OK         "ACL copiada com êxito."
+    IDS_GET_TOKENS_NO_AFS_SERVICE 
+                            "Não é possível ler as informações de token:  o serviço do AFS pode não ter iniciado."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR 
+                            "Não é possível ler as informações de token:  Erro inesperado, código %d."
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2 
+                            "Não é possível ler as informações de token:  Erro inesperado, serviço %s.%s.%s, código %d."
+    IDS_ENTER_QUOTA         "Digite uma quota válida."
+    IDS_AUTHENTICATION_ITEM "&Autenticação..."
+    IDS_ACLS_ITEM           "&Listas de Controle de Acesso..."
+    IDS_VOL_PART_ITEM       "&Volume/Partição"
+    IDS_VOL_PART_PROPS_ITEM "&Propriedades"
+    IDS_VOL_PART_REFRESH_ITEM "&Atualizar mapa de nome/ID"
+    IDS_MOUNT_POINT_ITEM    "Ponto de &Montagem"
+    IDS_MP_SHOW_ITEM        "E&xibir..."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS Client"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MP_REMOVE_ITEM      "&Remover..."
+    IDS_MP_MAKE_ITEM        "&Fazer..."
+    IDS_FLUSH_FILE_DIR_ITEM "&Esvaziar Arquivo/Dir"
+    IDS_FLUSH_VOLUME_ITEM   "Esvaziar Vol&ume"
+    IDS_SHOW_FILE_SERVERS_ITEM "Mostrar Servidores de Ar&quivos..."
+    IDS_SHOW_CELL_ITEM      "Mostrar &Célula..."
+    IDS_SHOW_SERVER_STATUS_ITEM "Mostrar &Status do Servidor..."
+    IDS_AFS_ITEM            "&AFS"
+    IDS_SUBMOUNTS_ITEM      "Su&bmontagens"
+    IDS_GET_SUBMT_INFO_ERROR 
+                            "Incapaz de ler as informações de submontagem para o sharename %o."
+    IDS_REALLY_DELETE_SUBMT "Excluir sharename %o?"
+    IDS_SUBMT_SAVE_FAILED   "Falha nas alterações ao banco de dados de submontagem."
+    IDS_SUBMOUNTS_CREATE_ITEM "&Incluir"
+    IDS_SUBMOUNTS_EDIT_ITEM "&Editar..."
+    IDS_EDIT_PATH_NAME      "Editar Nome do Caminho"
+    IDS_SHOW_CELL           "Mostrar Célula"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "Célula"
+    IDS_SHOW_FS             "Mostrar Servidores de Arquivos"
+    IDS_SHOW_FS_COLUMN      "Servidor(es) de Arquivos"
+    IDS_REMOVE_MP           "Remover Pontos de Montagem"
+    IDS_REMOVE_MP_COLUMN    "Resultado"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 8830314357972afc208a34844d3bbb4c1b6bcdf0..96867d7a08005babb3aa818780f551ada5bb5997 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// Chinese (P.R.C.) resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 9, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE \r
-BEGIN\r
-    MENUITEM "ÈÏÖ¤...",                     IDM_AUTHENTICATION\r
-    MENUITEM "´æÈ¡¿ØÖƱí...",               IDM_ACL_SET\r
-    POPUP "¾í£¯·ÖÇø(&V)"\r
-    BEGIN\r
-        MENUITEM "ÌØÐÔ(&P)...",                 IDM_VOLUME_PROPERTIES\r
-        MENUITEM "Ë¢ÐÂÃû³Æ£¯±êʶ·ûÓ³Éä(&R)",    IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "°²×°µã(&M)"\r
-    BEGIN\r
-        MENUITEM "ÏÔʾ(&S)...",                 IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "³ýÈ¥(&R)...",                 IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "¶¨ÖÆ(&M)...",                 IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "Çå²ÖÎļþ£¯Ä¿Â¼(&F)",          IDM_FLUSH\r
-    MENUITEM "Çå²Ö¾í(&U)",                  IDM_FLUSH_VOLUME\r
-    MENUITEM "ÏÔʾÎļþ·þÎñÆ÷(&F)...",       IDM_SHOW_SERVER\r
-    MENUITEM "ÏÔʾµ¥Ôª(&C)...",             IDM_SHOWCELL\r
-    MENUITEM "ÏÔʾ·þÎñÆ÷״̬...",           IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "¾íÐÅÏ¢"\r
-FONT 8, "System"\r
-BEGIN\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,60,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "°ïÖú",9,240,150,50,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,150,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Îļþ/Ŀ¼",IDC_STATIC,10,10,44,10\r
-    LTEXT           "Ãû³Æ",IDC_STATIC,90,10,20,8\r
-    LTEXT           "ÏÞ¶î",IDC_STATIC,225,10,19,8\r
-    LTEXT           "ÒÑʹÓÃ",IDC_STATIC,270,10,24,8\r
-    LTEXT           "ÒÑʹÓà%",IDC_STATIC,305,10,34,8\r
-    LTEXT           "±êʶ·û",IDC_STATIC,175,10,29,8\r
-    LTEXT           "ÐÂÏ޶",IDC_STATIC,10,127,40,10\r
-    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "ÏÔʾ·ÖÇøÐÅÏ¢",IDC_PARTITION_INFO,205,125,69,14,\r
-                    WS_DISABLED\r
-    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,118,127,25,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | \r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | \r
-                    WS_DISABLED,106,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ÉèÖàAFS ACL"\r
-FONT 8, "System"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,51,12,259,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - ¶ÁÈ¡",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,52,55,10\r
-    CONTROL         "w - Ð´Èë",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,111,55,10\r
-    CONTROL         "l - ²é±í",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,66,55,10\r
-    CONTROL         "d - É¾³ý",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,96,55,10\r
-    CONTROL         "i - ²åÈë",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,81,55,10\r
-    CONTROL         "k - Ëø¶¨",IDC_LOCK,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,126,55,10\r
-    CONTROL         "a - ¹ÜÀí",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,200,141,55,10\r
-    PUSHBUTTON      "Ìí¼Ó(&A)...",IDC_ADD,270,45,45,14\r
-    PUSHBUTTON      "³ýÈ¥(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED\r
-    PUSHBUTTON      "Çå³ý(&C)",IDC_CLEAN,270,95,45,14\r
-    DEFPUSHBUTTON   "È·¶¨(&O)",IDOK,270,150,45,14\r
-    PUSHBUTTON      "È¡Ïû(&N)",IDCANCEL,270,175,45,14\r
-    PUSHBUTTON      "°ïÖú(&H)",9,270,201,45,14\r
-    LTEXT           "Ŀ¼£º",IDC_STATIC,15,12,30,10\r
-    GROUPBOX        "Ðí¿ÉȨ",IDC_STATIC,195,41,65,115\r
-    LTEXT           "Õý³£",IDC_STATIC,10,30,23,8\r
-    LTEXT           "Ãû³Æ",IDC_COLUMN_3,69,38,20,8\r
-    LTEXT           "Ðí¿ÉȨ",IDC_STATIC,10,38,37,8\r
-    LTEXT           "ä¯ÀÀ",IDC_STATIC,10,125,30,8\r
-    LTEXT           "Ðí¿ÉȨ",IDC_STATIC,10,133,38,8\r
-    LTEXT           "Ãû³Æ",IDC_COLUMN_4,69,133,20,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "¸´ÖÆ(&P)...",IDC_COPY,270,120,45,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¶¨Öư²×°µã"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,20,81,50,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "°ïÖú",9,150,81,50,14\r
-    LTEXT           "Ŀ¼£º",IDC_STATIC,5,12,30,10\r
-    LTEXT           "¾í£º",IDC_STATIC,5,27,30,10\r
-    LTEXT           "µ¥Ôª£º",IDC_STATIC,5,42,30,10\r
-    GROUPBOX        "",IDC_STATIC,40,52,115,20\r
-    LTEXT           "Ñ¡Ï",IDC_STATIC,5,57,30,10\r
-    CONTROL         "¹æÔò",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,45,59,41,10\r
-    CONTROL         "¶ÁÈ¡£¯Ð´Èë",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,\r
-                    50,10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Ìí¼Ó ACL ÌõÄ¿"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,41,70,184,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - ¶ÁÈ¡",IDC_READ,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,15,45,10\r
-    CONTROL         "l - ²é±í",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,25,50,10\r
-    CONTROL         "i - ²åÈë",IDC_INSERT,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,35,50,10\r
-    CONTROL         "d - É¾³ý",IDC_DELETE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,20,45,50,10\r
-    CONTROL         "w - Ð´Èë",IDC_WRITE,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,15,50,10\r
-    CONTROL         "k - Ëø¶¨",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,25,55,10\r
-    CONTROL         "a - ¹ÜÀí",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | \r
-                    WS_TABSTOP,80,35,60,10\r
-    CONTROL         "Ò»°ãÌõÄ¿",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10\r
-    CONTROL         "ä¯ÀÀÌõÄ¿",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,161,26,59,10\r
-    PUSHBUTTON      "È·¶¨",IDOK,22,90,50,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,92,90,50,14\r
-    PUSHBUTTON      "°ïÖú",9,162,90,50,14\r
-    LTEXT           "Ãû³Æ£º",IDC_STATIC,10,72,26,8\r
-    GROUPBOX        "Ðí¿ÉȨ",IDC_STATIC,10,5,135,55\r
-    GROUPBOX        "ÌõÄ¿ÀàÐÍ",IDC_STATIC,155,6,70,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "·ÖÇøÐÅÏ¢"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,50,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,50,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | \r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,50,40,40,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,14,62,40,14\r
-    PUSHBUTTON      "°ïÖú",9,69,62,40,14\r
-    LTEXT           "ÒÑʹÓà%£º",IDC_STATIC,5,42,40,8\r
-    LTEXT           "¿ÕÏп飺",IDC_STATIC,5,27,40,8\r
-    LTEXT           "×ܼƴóС£º",IDC_STATIC,5,12,40,8\r
-    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,92,12,25,8\r
-    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,92,27,25,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¸´ÖÆ ACL"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "ä¯ÀÀ",IDC_BROWSE,195,25,35,15\r
-    CONTROL         "Çå³ýµ±Ç°ÌõÄ¿£º",IDC_CLEAR,"Button",BS_AUTOCHECKBOX | \r
-                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "°ïÖú",9,170,65,50,14\r
-    LTEXT           "¸´ÖÆ×Ô£º",IDC_STATIC,15,12,35,8\r
-    LTEXT           "¸´ÖƵ½£º",IDC_STATIC,15,29,35,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "λÖÃ"\r
-FONT 8, "System"\r
-BEGIN\r
-    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14\r
-    PUSHBUTTON      "°ïÖú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Îļþ/Ŀ¼",IDC_STATIC,10,10,47,8\r
-    LTEXT           "Îļþ·þÎñÆ÷",IDC_STATIC,128,10,44,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "½á¹û"\r
-FONT 8, "System"\r
-BEGIN\r
-    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14\r
-    PUSHBUTTON      "°ïÖú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Îļþ/Ŀ¼",-1,10,10,45,8\r
-    LTEXT           "½á¹û",IDC_RESULTS_LABEL,128,10,44,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "°²×°µã"\r
-FONT 8, "System"\r
-BEGIN\r
-    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14\r
-    PUSHBUTTON      "°ïÖú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    LTEXT           "Îļþ",IDC_STATIC,10,11,27,8\r
-    LTEXT           "¾í",IDC_STATIC,75,11,27,8\r
-    LTEXT           "µ¥Ôª",IDC_STATIC,155,11,27,8\r
-    LTEXT           "ÀàÐÍ",IDC_STATIC,230,11,27,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¹Ø±ÕµÄ·þÎñÆ÷"\r
-FONT 8, "System"\r
-BEGIN\r
-    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "ÕâЩ·þÎñÆ÷ÈÔÈ»¹Ø±Õ×Å£º",IDC_STATIC,10,10,95,8\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | \r
-    WS_SYSMENU\r
-CAPTION "·þÎñÆ÷״̬"\r
-FONT 8, "System"\r
-BEGIN\r
-    CONTROL         "±¾µØµ¥Ôª",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP | WS_TABSTOP,20,20,50,8\r
-    CONTROL         "Ö¸¶¨µÄµ¥Ôª£º",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10\r
-    CONTROL         "ËùÓе¥Ôª",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_TABSTOP,20,65,45,10\r
-    CONTROL         "²»¼ì²â·þÎñÆ÷",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,80,10\r
-    PUSHBUTTON      "ÏÔʾ״̬",IDC_SHOWSTATUS,10,120,50,14\r
-    GROUPBOX        "µ¥Ôª",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,90,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "¹Ø±Õ",IDCANCEL,65,120,50,14\r
-    PUSHBUTTON      "°ïÖú",9,120,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "ÈÏÖ¤"\r
-FONT 8, "System"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | \r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | \r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "»ñµÃÁîÅÆ",ID_GET_TOKENS,15,137,55,14\r
-    PUSHBUTTON      "¶ªÆúÁîÅÆ",ID_DISCARD_TOKENS,80,137,55,14\r
-    PUSHBUTTON      "¹Ø±Õ",IDCANCEL,145,137,55,14\r
-    PUSHBUTTON      "°ïÖú",9,215,137,55,14\r
-    LTEXT           "Óû§Ãû",IDC_STATIC,10,9,38,8\r
-    LTEXT           "µ¥ÔªÃû",IDC_STATIC,104,9,33,8\r
-    LTEXT           "µ½ÆÚ",IDC_STATIC,222,9,32,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "»ñµÃÁîÅÆ"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,20,70,35,14,WS_DISABLED\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,70,70,35,14\r
-    PUSHBUTTON      "°ïÖú",9,120,70,35,14\r
-    LTEXT           "Ãû³Æ£º",IDC_STATIC,10,12,27,8\r
-    LTEXT           "¿ÚÁ",IDC_STATIC,10,32,27,8\r
-    LTEXT           "µ¥Ôª£º",IDC_STATIC,10,52,27,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "¶ªÆúÁîÅÆ"\r
-FONT 8, "System"\r
-BEGIN\r
-    DEFPUSHBUTTON   "È·¶¨",IDOK,25,40,35,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,75,40,35,14\r
-    PUSHBUTTON      "°ïÖú",9,125,40,35,14\r
-    LTEXT           "µ¥Ôª£º",IDC_STATIC,10,17,24,8\r
-    EDITTEXT        IDC_CELL_NAME,37,15,137,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "×Ó°²×°"\r
-FONT 8, "System"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Ìí¼Ó ",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "ɾ³ý",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "¸ü¸Ä",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "×Ó°²×°£º",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "È·¶¨",IDOK,202,145,45,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Ìí¼Ó×Ó°²×°"\r
-FONT 8, "System"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "È·¶¨",IDOK,22,53,45,14\r
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,92,53,45,14\r
-    PUSHBUTTON      "°ïÖú",9,167,53,45,14\r
-    LTEXT           "¹²ÏíÃû£º",IDC_STATIC,18,10,41,8\r
-    LTEXT           "·¾¶Ãû£º",IDC_STATIC,18,25,41,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 162\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 178\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 228\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "µÇ¼½øÈë»òÍ˳ö AFS"\r
-    ID_SERVER_STATUS        "¼ì²é·þÎñÆ÷"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "²»ÄÜÇå²Ö»î¶¯µÄÎļþ %o"\r
-    IDS_FLUSH_ERROR         "Çå²ÖÎļþ %o ³ö´í£º %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_FLUSH_OK            "³É¹¦Çå²ÖÑ¡¶¨µÄÎļþ"\r
-    IDS_CANT_GET_CELL       "È·¶¨µ¥Ôª³ö´í£º"\r
-    IDS_FLUSH_VOLUME_ERROR  "Çå²Ö %o µÄ¾í³ö´í£º%s"\r
-    IDS_FLUSH_VOLUME_OK     "Çå²Ö¾í³É¹¦"\r
-    IDS_WHERE_IS            "Îļþ %o ÔÚÖ÷»ú %s ÉÏ"\r
-    IDS_CLEANACL_NOT_SUPPORTED \r
-                            "²»ÄÜÇå³ýÎļþ %o µÄ ACL£ºDFS ´æÈ¡ÁÐ±í²»Ö§³ÖÇå³ý Acl"\r
-    IDS_ACL_IS_FINE         "%o ´æÈ¡Áбí¿ÉÓÃ"\r
-    IDS_CLEANACL_INVALID_ARG \r
-                            "²»ÄÜÇå³ýÎļþ %o µÄ ACL£ºÎÞЧ±äÁ¿,¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ vice Öлò´æÈ¡¿ØÖƱíÖÐÓû§Ì«¶à"\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "ÒÑɾ³ý¹ýʱµÄ ACL ÌõÄ¿¡£"\r
-    ID_SUBMOUNTS            "´´½¨»òɾ³ýÒ»¸ö AFS ×Ó°²×°"\r
-    IDS_GETRIGHTS_ERROR     "ÎÞ·¨¶ÁȡĿ¼ %o µÄ´æÈ¡ÁÐ±í£º%o"\r
-    IDS_DFSACL_ERROR        "²»ÄÜÓôËÃüÁî±à¼­ DFS ACL"\r
-    IDS_SAVE_ACL_ERROR      "²»Äܱ£´æ %o µÄ ACL£º%o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR \r
-                            "²»Äܱ£´æ %o µÄ ACL£ºÎÞЧ±äÁ¿£¬¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ AFS ÖУ¬»ò´æÈ¡¿ØÖƱíÖÐÓû§Ì«¶à£¬Çë³¢ÊÔÌí¼Ó·ÇÏÖÓÐÓû§ÖÁ´æÈ¡¿ØÖƱíÖÐ"\r
-    IDS_ACL_READ_ERROR      "²»ÄܶÁÈ¡ %o µÄ ACL£º%o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "²»ÄÜΪĿ¼ %o ¸´ÖÆ ACL£ºDFS ´æÈ¡ÁÐ±í²»Ö§³Ö¸´ÖÆ ACL"\r
-    IDS_COPY_ACL_EINVAL_ERROR \r
-                            "²»Äܸ´ÖÆ ACL ÖÁĿ¼ %o£ºÎÞЧ±äÁ¿£¬¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ AFS ÖС£"\r
-    IDS_COPY_ACL_ERROR      "²»Äܸ´ÖÆ ACL ÖÁ %o£º%o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%o ²»ÊÇÒ»¸ö°²×°µã¡£"\r
-    IDS_LIST_MOUNT_POINT_ERROR "³ö´í£º%o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR "°²×°µã±ØÐë´´½¨ÔÚ AFS ÎļþϵͳÖÐ"\r
-    IDS_MOUNT_POINT_ERROR   "´´½¨°²×°µã³ö´í£º%o"\r
-    IDS_ERROR               "³ö´í£º%o"\r
-    IDS_DELETED             "³É¹¦É¾³ý"\r
-    IDS_SET_QUOTA_ERROR     "ÉèÖÃÏÞ¶î³ö´í£º%o"\r
-    ID_SUBMOUNTS_CREATE     "´´½¨Ò»¸ö AFS ×Ó°²×°"\r
-    ID_SUBMOUNTS_EDIT       "Ìí¼Ó¡¢¸ü¸Ä»òɾ³ý AFS ×Ó°²×°"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "¼ì²éÎļþ·þÎñÆ÷µÄ״̬³ö´í£º %o"\r
-    IDS_ALL_SERVERS_RUNNING "ËùÓзþÎñÆ÷ÕýÔÚÔËÐС£"\r
-    IDS_CHECK_VOLUMES_OK    "ÒѼì²éËùÓоí±êʶ·û£¯Ãû³ÆÓ³Éä¡£"\r
-    IDS_CHECK_VOLUMES_ERROR "¼ì²é¾í±êʶ·û£¯Ãû³ÆÓ³Éä³ö´í£º %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE "ÄúËùÑ¡ÔñµÄÃû³ÆÔÚʹÓÃÖС£ÇëÊäÈëÒ»¸ö²»Í¬µÄÃû³Æ¡£"\r
-    IDS_REALLY_DEL_MOUNT_POINTS "È·ÈÏÄúÒª³ýȥѡ¶¨µÄ°²×°µãÂð?"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "Ŀ¼¡®%o¡¯²»´æÔÚ¡£"\r
-    IDS_CLEANACL_MSG        "½«É¾³ý¹ýʱµÄ ACL!"\r
-    IDS_COPY_ACL_OK         "ACL ¸´ÖƳɹ¦¡£"\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£ºAFS ·þÎñ¿ÉÄÜûÓÐÆô¶¯¡£"\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR \r
-                            "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£º²»¿ÉÔ¤¼ÆµÄ´íÎ󣬴úÂë %d¡£"\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2 \r
-                            "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£º²»¿ÉÔ¤¼ÆµÄ´íÎ󣬷þÎñ %s.%s.%s£¬´úÂë %d¡£"\r
-    IDS_ENTER_QUOTA         "ÇëÊäÈëÒ»¸öÓÐЧµÄÏÞ¶î¡£"\r
-    IDS_AUTHENTICATION_ITEM "ÈÏÖ¤(&A)..."\r
-    IDS_ACLS_ITEM           "´æÈ¡¿ØÖƱí(&C)..."\r
-    IDS_VOL_PART_ITEM       "¾í£¯·ÖÇø(&V)"\r
-    IDS_VOL_PART_PROPS_ITEM "ÌØÐÔ(&P)"\r
-    IDS_VOL_PART_REFRESH_ITEM "Ë¢ÐÂÃû³Æ£¯±êʶ·ûÓ³Éä(&R)"\r
-    IDS_MOUNT_POINT_ITEM    "°²×°µã(&M)"\r
-    IDS_MP_SHOW_ITEM        "ÏÔʾ(&S)..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS ¿Í»§»ú"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "³ýÈ¥(&R)..."\r
-    IDS_MP_MAKE_ITEM        "¶¨ÖÆ(&M)..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "Çå²ÖÎļþ£¯Ä¿Â¼(&F)"\r
-    IDS_FLUSH_VOLUME_ITEM   "Çå²Ö¾í(&U)"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "ÏÔʾÎļþ·þÎñÆ÷(&F)..."\r
-    IDS_SHOW_CELL_ITEM      "ÏÔʾµ¥Ôª(&C)..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "ÏÔʾ·þÎñÆ÷״̬..."\r
-    IDS_AFS_ITEM            "AFS(&A)"\r
-    IDS_SUBMOUNTS_ITEM      "×Ó°²×°(&B)"\r
-    IDS_GET_SUBMT_INFO_ERROR "ÎÞ·¨¶ÁÈ¡Óйع²ÏíÃû %o µÄ×Ó°²×°ÐÅÏ¢¡£"\r
-    IDS_REALLY_DELETE_SUBMT "ɾ³ý¹²ÏíÃû %o Âð?"\r
-    IDS_SUBMT_SAVE_FAILED   "¶ÔÓÚ×Ó°²×°Êý¾Ý¿âµÄ¸ü¸Äʧ°Ü¡£"\r
-    IDS_SUBMOUNTS_CREATE_ITEM "Ìí¼Ó(&A)"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "±à¼­(&E)..."\r
-    IDS_EDIT_PATH_NAME      "±à¼­Â·¾¶Ãû"\r
-    IDS_SHOW_CELL           "ÏÔʾµ¥Ôª"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "µ¥Ôª"\r
-    IDS_SHOW_FS             "ÏÔʾÎļþ·þÎñÆ÷"\r
-    IDS_SHOW_FS_COLUMN      "Îļþ·þÎñÆ÷"\r
-    IDS_REMOVE_MP           "³ýÈ¥°²×°µã"\r
-    IDS_REMOVE_MP_COLUMN    "½á¹û"\r
-END\r
-\r
-#endif    // Chinese (P.R.C.) resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE 9, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Chinese (P.R.C.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
+#ifdef _WIN32
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE 
+BEGIN
+    MENUITEM "ÈÏÖ¤...",                     IDM_AUTHENTICATION
+    MENUITEM "´æÈ¡¿ØÖƱí...",               IDM_ACL_SET
+    POPUP "¾í£¯·ÖÇø(&V)"
+    BEGIN
+        MENUITEM "ÌØÐÔ(&P)...",                 IDM_VOLUME_PROPERTIES
+        MENUITEM "Ë¢ÐÂÃû³Æ£¯±êʶ·ûÓ³Éä(&R)",    IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "°²×°µã(&M)"
+    BEGIN
+        MENUITEM "ÏÔʾ(&S)...",                 IDM_MOUNTPOINT_SHOW
+        MENUITEM "³ýÈ¥(&R)...",                 IDM_MOUNTPOINT_REMOVE
+        MENUITEM "¶¨ÖÆ(&M)...",                 IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "Çå²ÖÎļþ£¯Ä¿Â¼(&F)",          IDM_FLUSH
+    MENUITEM "Çå²Ö¾í(&U)",                  IDM_FLUSH_VOLUME
+    MENUITEM "ÏÔʾÎļþ·þÎñÆ÷(&F)...",       IDM_SHOW_SERVER
+    MENUITEM "ÏÔʾµ¥Ôª(&C)...",             IDM_SHOWCELL
+    MENUITEM "ÏÔʾ·þÎñÆ÷״̬...",           IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "¾íÐÅÏ¢"
+FONT 8, "System"
+BEGIN
+    DEFPUSHBUTTON   "È·¶¨",IDOK,60,150,50,14,WS_DISABLED
+    PUSHBUTTON      "°ïÖú",9,240,150,50,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,150,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Îļþ/Ŀ¼",IDC_STATIC,10,10,44,10
+    LTEXT           "Ãû³Æ",IDC_STATIC,90,10,20,8
+    LTEXT           "ÏÞ¶î",IDC_STATIC,225,10,19,8
+    LTEXT           "ÒÑʹÓÃ",IDC_STATIC,270,10,24,8
+    LTEXT           "ÒÑʹÓà%",IDC_STATIC,305,10,34,8
+    LTEXT           "±êʶ·û",IDC_STATIC,175,10,29,8
+    LTEXT           "ÐÂÏ޶",IDC_STATIC,10,127,40,10
+    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "ÏÔʾ·ÖÇøÐÅÏ¢",IDC_PARTITION_INFO,205,125,69,14,
+                    WS_DISABLED
+    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,118,127,25,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP | 
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | 
+                    WS_DISABLED,106,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ÉèÖàAFS ACL"
+FONT 8, "System"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,51,12,259,10
+    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - ¶ÁÈ¡",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,52,55,10
+    CONTROL         "w - Ð´Èë",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,111,55,10
+    CONTROL         "l - ²é±í",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,66,55,10
+    CONTROL         "d - É¾³ý",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,96,55,10
+    CONTROL         "i - ²åÈë",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,81,55,10
+    CONTROL         "k - Ëø¶¨",IDC_LOCK,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,126,55,10
+    CONTROL         "a - ¹ÜÀí",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,200,141,55,10
+    PUSHBUTTON      "Ìí¼Ó(&A)...",IDC_ADD,270,45,45,14
+    PUSHBUTTON      "³ýÈ¥(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED
+    PUSHBUTTON      "Çå³ý(&C)",IDC_CLEAN,270,95,45,14
+    DEFPUSHBUTTON   "È·¶¨(&O)",IDOK,270,150,45,14
+    PUSHBUTTON      "È¡Ïû(&N)",IDCANCEL,270,175,45,14
+    PUSHBUTTON      "°ïÖú(&H)",9,270,201,45,14
+    LTEXT           "Ŀ¼£º",IDC_STATIC,15,12,30,10
+    GROUPBOX        "Ðí¿ÉȨ",IDC_STATIC,195,41,65,115
+    LTEXT           "Õý³£",IDC_STATIC,10,30,23,8
+    LTEXT           "Ãû³Æ",IDC_COLUMN_3,69,38,20,8
+    LTEXT           "Ðí¿ÉȨ",IDC_STATIC,10,38,37,8
+    LTEXT           "ä¯ÀÀ",IDC_STATIC,10,125,30,8
+    LTEXT           "Ðí¿ÉȨ",IDC_STATIC,10,133,38,8
+    LTEXT           "Ãû³Æ",IDC_COLUMN_4,69,133,20,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "¸´ÖÆ(&P)...",IDC_COPY,270,120,45,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¶¨Öư²×°µã"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "È·¶¨",IDOK,20,81,50,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "°ïÖú",9,150,81,50,14
+    LTEXT           "Ŀ¼£º",IDC_STATIC,5,12,30,10
+    LTEXT           "¾í£º",IDC_STATIC,5,27,30,10
+    LTEXT           "µ¥Ôª£º",IDC_STATIC,5,42,30,10
+    GROUPBOX        "",IDC_STATIC,40,52,115,20
+    LTEXT           "Ñ¡Ï",IDC_STATIC,5,57,30,10
+    CONTROL         "¹æÔò",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,45,59,41,10
+    CONTROL         "¶ÁÈ¡£¯Ð´Èë",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,
+                    50,10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ìí¼Ó ACL ÌõÄ¿"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_NAME,41,70,184,12,ES_AUTOHSCROLL
+    CONTROL         "r - ¶ÁÈ¡",IDC_READ,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,15,45,10
+    CONTROL         "l - ²é±í",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,25,50,10
+    CONTROL         "i - ²åÈë",IDC_INSERT,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,35,50,10
+    CONTROL         "d - É¾³ý",IDC_DELETE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,20,45,50,10
+    CONTROL         "w - Ð´Èë",IDC_WRITE,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,15,50,10
+    CONTROL         "k - Ëø¶¨",IDC_LOCK2,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,25,55,10
+    CONTROL         "a - ¹ÜÀí",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,80,35,60,10
+    CONTROL         "Ò»°ãÌõÄ¿",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10
+    CONTROL         "ä¯ÀÀÌõÄ¿",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,161,26,59,10
+    PUSHBUTTON      "È·¶¨",IDOK,22,90,50,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,92,90,50,14
+    PUSHBUTTON      "°ïÖú",9,162,90,50,14
+    LTEXT           "Ãû³Æ£º",IDC_STATIC,10,72,26,8
+    GROUPBOX        "Ðí¿ÉȨ",IDC_STATIC,10,5,135,55
+    GROUPBOX        "ÌõÄ¿ÀàÐÍ",IDC_STATIC,155,6,70,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "·ÖÇøÐÅÏ¢"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,50,10,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,50,25,40,12,ES_AUTOHSCROLL | WS_DISABLED | 
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,50,40,40,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,14,62,40,14
+    PUSHBUTTON      "°ïÖú",9,69,62,40,14
+    LTEXT           "ÒÑʹÓà%£º",IDC_STATIC,5,42,40,8
+    LTEXT           "¿ÕÏп飺",IDC_STATIC,5,27,40,8
+    LTEXT           "×ܼƴóС£º",IDC_STATIC,5,12,40,8
+    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,92,12,25,8
+    LTEXT           "ǧ×Ö½Ú",IDC_STATIC,92,27,25,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¸´ÖÆ ACL"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "ä¯ÀÀ",IDC_BROWSE,195,25,35,15
+    CONTROL         "Çå³ýµ±Ç°ÌõÄ¿£º",IDC_CLEAR,"Button",BS_AUTOCHECKBOX | 
+                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10
+    DEFPUSHBUTTON   "È·¶¨",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "°ïÖú",9,170,65,50,14
+    LTEXT           "¸´ÖÆ×Ô£º",IDC_STATIC,15,12,35,8
+    LTEXT           "¸´ÖƵ½£º",IDC_STATIC,15,29,35,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "λÖÃ"
+FONT 8, "System"
+BEGIN
+    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14
+    PUSHBUTTON      "°ïÖú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Îļþ/Ŀ¼",IDC_STATIC,10,10,47,8
+    LTEXT           "Îļþ·þÎñÆ÷",IDC_STATIC,128,10,44,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "½á¹û"
+FONT 8, "System"
+BEGIN
+    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14
+    PUSHBUTTON      "°ïÖú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Îļþ/Ŀ¼",-1,10,10,45,8
+    LTEXT           "½á¹û",IDC_RESULTS_LABEL,128,10,44,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "°²×°µã"
+FONT 8, "System"
+BEGIN
+    DEFPUSHBUTTON   "¹Ø±Õ",IDOK,65,145,50,14
+    PUSHBUTTON      "°ïÖú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Îļþ",IDC_STATIC,10,11,27,8
+    LTEXT           "¾í",IDC_STATIC,75,11,27,8
+    LTEXT           "µ¥Ôª",IDC_STATIC,155,11,27,8
+    LTEXT           "ÀàÐÍ",IDC_STATIC,230,11,27,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "¹Ø±ÕµÄ·þÎñÆ÷"
+FONT 8, "System"
+BEGIN
+    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "ÕâЩ·þÎñÆ÷ÈÔÈ»¹Ø±Õ×Å£º",IDC_STATIC,10,10,95,8
+    DEFPUSHBUTTON   "È·¶¨",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "·þÎñÆ÷״̬"
+FONT 8, "System"
+BEGIN
+    CONTROL         "±¾µØµ¥Ôª",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP | WS_TABSTOP,20,20,50,8
+    CONTROL         "Ö¸¶¨µÄµ¥Ôª£º",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10
+    CONTROL         "ËùÓе¥Ôª",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON | 
+                    WS_TABSTOP,20,65,45,10
+    CONTROL         "²»¼ì²â·þÎñÆ÷",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,80,10
+    PUSHBUTTON      "ÏÔʾ״̬",IDC_SHOWSTATUS,10,120,50,14
+    GROUPBOX        "µ¥Ôª",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,90,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "¹Ø±Õ",IDCANCEL,65,120,50,14
+    PUSHBUTTON      "°ïÖú",9,120,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ÈÏÖ¤"
+FONT 8, "System"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS | 
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | 
+                    WS_TABSTOP
+    PUSHBUTTON      "»ñµÃÁîÅÆ",ID_GET_TOKENS,15,137,55,14
+    PUSHBUTTON      "¶ªÆúÁîÅÆ",ID_DISCARD_TOKENS,80,137,55,14
+    PUSHBUTTON      "¹Ø±Õ",IDCANCEL,145,137,55,14
+    PUSHBUTTON      "°ïÖú",9,215,137,55,14
+    LTEXT           "Óû§Ãû",IDC_STATIC,10,9,38,8
+    LTEXT           "µ¥ÔªÃû",IDC_STATIC,104,9,33,8
+    LTEXT           "µ½ÆÚ",IDC_STATIC,222,9,32,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "»ñµÃÁîÅÆ"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "È·¶¨",IDOK,20,70,35,14,WS_DISABLED
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,70,70,35,14
+    PUSHBUTTON      "°ïÖú",9,120,70,35,14
+    LTEXT           "Ãû³Æ£º",IDC_STATIC,10,12,27,8
+    LTEXT           "¿ÚÁ",IDC_STATIC,10,32,27,8
+    LTEXT           "µ¥Ôª£º",IDC_STATIC,10,52,27,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "¶ªÆúÁîÅÆ"
+FONT 8, "System"
+BEGIN
+    DEFPUSHBUTTON   "È·¶¨",IDOK,25,40,35,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,75,40,35,14
+    PUSHBUTTON      "°ïÖú",9,125,40,35,14
+    LTEXT           "µ¥Ôª£º",IDC_STATIC,10,17,24,8
+    EDITTEXT        IDC_CELL_NAME,37,15,137,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "×Ó°²×°"
+FONT 8, "System"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Ìí¼Ó ",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "ɾ³ý",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "¸ü¸Ä",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "×Ó°²×°£º",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "È·¶¨",IDOK,202,145,45,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ìí¼Ó×Ó°²×°"
+FONT 8, "System"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,62,8,163,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,62,23,163,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "È·¶¨",IDOK,22,53,45,14
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,92,53,45,14
+    PUSHBUTTON      "°ïÖú",9,167,53,45,14
+    LTEXT           "¹²ÏíÃû£º",IDC_STATIC,18,10,41,8
+    LTEXT           "·¾¶Ãû£º",IDC_STATIC,18,25,41,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 162
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 178
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 228
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "µÇ¼½øÈë»òÍ˳ö AFS"
+    ID_SERVER_STATUS        "¼ì²é·þÎñÆ÷"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "²»ÄÜÇå²Ö»î¶¯µÄÎļþ %o"
+    IDS_FLUSH_ERROR         "Çå²ÖÎļþ %o ³ö´í£º %s"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_FLUSH_OK            "³É¹¦Çå²ÖÑ¡¶¨µÄÎļþ"
+    IDS_CANT_GET_CELL       "È·¶¨µ¥Ôª³ö´í£º"
+    IDS_FLUSH_VOLUME_ERROR  "Çå²Ö %o µÄ¾í³ö´í£º%s"
+    IDS_FLUSH_VOLUME_OK     "Çå²Ö¾í³É¹¦"
+    IDS_WHERE_IS            "Îļþ %o ÔÚÖ÷»ú %s ÉÏ"
+    IDS_CLEANACL_NOT_SUPPORTED 
+                            "²»ÄÜÇå³ýÎļþ %o µÄ ACL£ºDFS ´æÈ¡ÁÐ±í²»Ö§³ÖÇå³ý Acl"
+    IDS_ACL_IS_FINE         "%o ´æÈ¡Áбí¿ÉÓÃ"
+    IDS_CLEANACL_INVALID_ARG 
+                            "²»ÄÜÇå³ýÎļþ %o µÄ ACL£ºÎÞЧ±äÁ¿,¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ vice Öлò´æÈ¡¿ØÖƱíÖÐÓû§Ì«¶à"
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "ÒÑɾ³ý¹ýʱµÄ ACL ÌõÄ¿¡£"
+    ID_SUBMOUNTS            "´´½¨»òɾ³ýÒ»¸ö AFS ×Ó°²×°"
+    IDS_GETRIGHTS_ERROR     "ÎÞ·¨¶ÁȡĿ¼ %o µÄ´æÈ¡ÁÐ±í£º%o"
+    IDS_DFSACL_ERROR        "²»ÄÜÓôËÃüÁî±à¼­ DFS ACL"
+    IDS_SAVE_ACL_ERROR      "²»Äܱ£´æ %o µÄ ACL£º%o"
+    IDS_SAVE_ACL_EINVAL_ERROR 
+                            "²»Äܱ£´æ %o µÄ ACL£ºÎÞЧ±äÁ¿£¬¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ AFS ÖУ¬»ò´æÈ¡¿ØÖƱíÖÐÓû§Ì«¶à£¬Çë³¢ÊÔÌí¼Ó·ÇÏÖÓÐÓû§ÖÁ´æÈ¡¿ØÖƱíÖÐ"
+    IDS_ACL_READ_ERROR      "²»ÄܶÁÈ¡ %o µÄ ACL£º%o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "²»ÄÜΪĿ¼ %o ¸´ÖÆ ACL£ºDFS ´æÈ¡ÁÐ±í²»Ö§³Ö¸´ÖÆ ACL"
+    IDS_COPY_ACL_EINVAL_ERROR 
+                            "²»Äܸ´ÖÆ ACL ÖÁĿ¼ %o£ºÎÞЧ±äÁ¿£¬¿ÉÄܵÄÔ­Òò°üÀ¨£ºÎļþ²»ÔÚ AFS ÖС£"
+    IDS_COPY_ACL_ERROR      "²»Äܸ´ÖÆ ACL ÖÁ %o£º%o"
+    IDS_NOT_MOUNT_POINT_ERROR "%o ²»ÊÇÒ»¸ö°²×°µã¡£"
+    IDS_LIST_MOUNT_POINT_ERROR "³ö´í£º%o"
+    IDS_MAKE_MP_NOT_AFS_ERROR "°²×°µã±ØÐë´´½¨ÔÚ AFS ÎļþϵͳÖÐ"
+    IDS_MOUNT_POINT_ERROR   "´´½¨°²×°µã³ö´í£º%o"
+    IDS_ERROR               "³ö´í£º%o"
+    IDS_DELETED             "³É¹¦É¾³ý"
+    IDS_SET_QUOTA_ERROR     "ÉèÖÃÏÞ¶î³ö´í£º%o"
+    ID_SUBMOUNTS_CREATE     "´´½¨Ò»¸ö AFS ×Ó°²×°"
+    ID_SUBMOUNTS_EDIT       "Ìí¼Ó¡¢¸ü¸Ä»òɾ³ý AFS ×Ó°²×°"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "¼ì²éÎļþ·þÎñÆ÷µÄ״̬³ö´í£º %o"
+    IDS_ALL_SERVERS_RUNNING "ËùÓзþÎñÆ÷ÕýÔÚÔËÐС£"
+    IDS_CHECK_VOLUMES_OK    "ÒѼì²éËùÓоí±êʶ·û£¯Ãû³ÆÓ³Éä¡£"
+    IDS_CHECK_VOLUMES_ERROR "¼ì²é¾í±êʶ·û£¯Ãû³ÆÓ³Éä³ö´í£º %o"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE "ÄúËùÑ¡ÔñµÄÃû³ÆÔÚʹÓÃÖС£ÇëÊäÈëÒ»¸ö²»Í¬µÄÃû³Æ¡£"
+    IDS_REALLY_DEL_MOUNT_POINTS "È·ÈÏÄúÒª³ýȥѡ¶¨µÄ°²×°µãÂð?"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "Ŀ¼¡®%o¡¯²»´æÔÚ¡£"
+    IDS_CLEANACL_MSG        "½«É¾³ý¹ýʱµÄ ACL!"
+    IDS_COPY_ACL_OK         "ACL ¸´ÖƳɹ¦¡£"
+    IDS_GET_TOKENS_NO_AFS_SERVICE "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£ºAFS ·þÎñ¿ÉÄÜûÓÐÆô¶¯¡£"
+    IDS_GET_TOKENS_UNEXPECTED_ERROR 
+                            "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£º²»¿ÉÔ¤¼ÆµÄ´íÎ󣬴úÂë %d¡£"
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2 
+                            "²»ÄܶÁÈ¡ÁîÅÆÐÅÏ¢£º²»¿ÉÔ¤¼ÆµÄ´íÎ󣬷þÎñ %s.%s.%s£¬´úÂë %d¡£"
+    IDS_ENTER_QUOTA         "ÇëÊäÈëÒ»¸öÓÐЧµÄÏÞ¶î¡£"
+    IDS_AUTHENTICATION_ITEM "ÈÏÖ¤(&A)..."
+    IDS_ACLS_ITEM           "´æÈ¡¿ØÖƱí(&C)..."
+    IDS_VOL_PART_ITEM       "¾í£¯·ÖÇø(&V)"
+    IDS_VOL_PART_PROPS_ITEM "ÌØÐÔ(&P)"
+    IDS_VOL_PART_REFRESH_ITEM "Ë¢ÐÂÃû³Æ£¯±êʶ·ûÓ³Éä(&R)"
+    IDS_MOUNT_POINT_ITEM    "°²×°µã(&M)"
+    IDS_MP_SHOW_ITEM        "ÏÔʾ(&S)..."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS ¿Í»§»ú"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MP_REMOVE_ITEM      "³ýÈ¥(&R)..."
+    IDS_MP_MAKE_ITEM        "¶¨ÖÆ(&M)..."
+    IDS_FLUSH_FILE_DIR_ITEM "Çå²ÖÎļþ£¯Ä¿Â¼(&F)"
+    IDS_FLUSH_VOLUME_ITEM   "Çå²Ö¾í(&U)"
+    IDS_SHOW_FILE_SERVERS_ITEM "ÏÔʾÎļþ·þÎñÆ÷(&F)..."
+    IDS_SHOW_CELL_ITEM      "ÏÔʾµ¥Ôª(&C)..."
+    IDS_SHOW_SERVER_STATUS_ITEM "ÏÔʾ·þÎñÆ÷״̬..."
+    IDS_AFS_ITEM            "AFS(&A)"
+    IDS_SUBMOUNTS_ITEM      "×Ó°²×°(&B)"
+    IDS_GET_SUBMT_INFO_ERROR "ÎÞ·¨¶ÁÈ¡Óйع²ÏíÃû %o µÄ×Ó°²×°ÐÅÏ¢¡£"
+    IDS_REALLY_DELETE_SUBMT "ɾ³ý¹²ÏíÃû %o Âð?"
+    IDS_SUBMT_SAVE_FAILED   "¶ÔÓÚ×Ó°²×°Êý¾Ý¿âµÄ¸ü¸Äʧ°Ü¡£"
+    IDS_SUBMOUNTS_CREATE_ITEM "Ìí¼Ó(&A)"
+    IDS_SUBMOUNTS_EDIT_ITEM "±à¼­(&E)..."
+    IDS_EDIT_PATH_NAME      "±à¼­Â·¾¶Ãû"
+    IDS_SHOW_CELL           "ÏÔʾµ¥Ôª"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "µ¥Ôª"
+    IDS_SHOW_FS             "ÏÔʾÎļþ·þÎñÆ÷"
+    IDS_SHOW_FS_COLUMN      "Îļþ·þÎñÆ÷"
+    IDS_REMOVE_MP           "³ýÈ¥°²×°µã"
+    IDS_REMOVE_MP_COLUMN    "½á¹û"
+END
+
+#endif    // Chinese (P.R.C.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 9281a0d52ed0114b05375d17a6c3b1c81e3d56b0..4c588d313084b59719122a300b3b18606ce957df 100644 (file)
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#include "afxres.h"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// Chinese (Taiwan) resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL\r
-#endif //_WIN32\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE\r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE\r
-BEGIN\r
-    "#include ""afxres.h""\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE\r
-BEGIN\r
-    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"\r
-    "#define _AFX_NO_OLE_RESOURCES\r\n"\r
-    "#define _AFX_NO_TRACKER_RESOURCES\r\n"\r
-    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"\r
-    "\r\n"\r
-    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)\r\n"\r
-    "#ifdef _WIN32\r\n"\r
-    "LANGUAGE 4, 1\r\n"\r
-    "#endif\r\n"\r
-    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"\r
-    "#include ""afxres.rc""         // Standard components\r\n"\r
-    "#endif\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
-IDR_MENU_FILE MENU DISCARDABLE\r
-BEGIN\r
-    MENUITEM "Ų§O...",                     IDM_AUTHENTICATION\r
-    MENUITEM "¦s¨ú±±¨î²M³æ...",             IDM_ACL_SET\r
-    POPUP "®eÅé/¤À³Î°Ï(&V)"\r
-    BEGIN\r
-        MENUITEM "¤º®e(&P)...",                 IDM_VOLUME_PROPERTIES\r
-        MENUITEM "­«·s¾ã²z¦WºÙ/ID ¹ïÀ³(&R)",    IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE\r
-\r
-    END\r
-    POPUP "¸Ë¸üÂI(&M)"\r
-    BEGIN\r
-        MENUITEM "Åã¥Ü(&S)...",                 IDM_MOUNTPOINT_SHOW\r
-        MENUITEM "²¾°£(&R)...",                 IDM_MOUNTPOINT_REMOVE\r
-        MENUITEM "»s§@(&M)...",                 IDM_MOUNTPOINT_MAKE\r
-    END\r
-    MENUITEM "¨R¼gÀÉ®×/¥Ø¿ý(&F)",           IDM_FLUSH\r
-    MENUITEM "¨R¼g®eÅé(&U)",                IDM_FLUSH_VOLUME\r
-    MENUITEM "Åã¥ÜÀɮצøªA¾¹(&F)...",       IDM_SHOW_SERVER\r
-    MENUITEM "Åã¥Ü Cell (&C)...",           IDM_SHOWCELL\r
-    MENUITEM "Åã¥Ü¦øªA¾¹ª¬ºA...",           IDM_SERVER_STATUS\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |\r
-    WS_SYSMENU\r
-CAPTION "®eÅé¸ê°T"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    DEFPUSHBUTTON   "½T©w",IDOK,55,150,50,14,WS_DISABLED\r
-    PUSHBUTTON      "»¡©ú",9,235,150,50,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,145,150,50,14\r
-    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "ÀÉ®× / ¥Ø¿ý",IDC_STATIC,10,10,44,10\r
-    LTEXT           "¦WºÙ",IDC_STATIC,90,10,20,8\r
-    LTEXT           "°tÃB",IDC_STATIC,225,10,19,8\r
-    LTEXT           "¤w¨Ï¥Îªº",IDC_STATIC,270,10,20,8\r
-    LTEXT           "¤w¨Ï¥Îªº % (U)",IDC_STATIC,305,10,25,8\r
-    LTEXT           "ID",IDC_STATIC,175,10,10,8\r
-    LTEXT           "·s°tÃB¡G",IDC_STATIC,10,127,40,10\r
-    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED\r
-    PUSHBUTTON      "Åã¥Ü¤À³Î°Ï¸ê°T",IDC_PARTITION_INFO,216,125,69,14,\r
-                    WS_DISABLED\r
-    LTEXT           "¤d¦ì¤¸²Õ",IDC_STATIC,122,128,51,10\r
-    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP |\r
-                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS |\r
-                    WS_DISABLED,106,125,10,14\r
-END\r
-\r
-IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "³]©w AFS ACL"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    LTEXT           "",IDC_DIR_NAME,51,12,259,10\r
-    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL |\r
-                    WS_HSCROLL | WS_TABSTOP\r
-    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL |\r
-                    WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "r - Åª¨ú",IDC_READ,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,52,55,10\r
-    CONTROL         "w - ¼g¤J",IDC_WRITE,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,111,55,10\r
-    CONTROL         "l - ¬d¾\",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,66,55,10\r
-    CONTROL         "d - §R°£",IDC_DELETE,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,96,55,10\r
-    CONTROL         "i - ´¡¤J",IDC_INSERT,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,81,55,10\r
-    CONTROL         "k - Âê©w",IDC_LOCK,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,126,55,10\r
-    CONTROL         "a - ºÞ²zªÌ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,200,141,55,10\r
-    PUSHBUTTON      "·s¼W(&A)...",IDC_ADD,270,45,45,14\r
-    PUSHBUTTON      "²¾°£(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED\r
-    PUSHBUTTON      "²M°£(&C)",IDC_CLEAN,270,95,45,14\r
-    DEFPUSHBUTTON   "½T©w(&O)",IDOK,270,150,45,14\r
-    PUSHBUTTON      "¨ú®ø(&N)",IDCANCEL,270,175,45,14\r
-    PUSHBUTTON      "»¡©ú(&H)",9,270,201,45,14\r
-    LTEXT           "¥Ø¿ý¡G",IDC_STATIC,15,12,30,10\r
-    GROUPBOX        "³\¥iÅv",IDC_STATIC,195,41,65,115\r
-    LTEXT           "¤@¯ë",IDC_STATIC,10,30,23,8\r
-    LTEXT           "¦WºÙ",IDC_COLUMN_3,69,38,20,8\r
-    LTEXT           "³\¥iÅv",IDC_STATIC,10,38,37,8\r
-    LTEXT           "­t­±ªº",IDC_STATIC,10,125,30,8\r
-    LTEXT           "³\¥iÅv",IDC_STATIC,10,133,38,8\r
-    LTEXT           "¦WºÙ",IDC_COLUMN_4,69,133,20,8\r
-    GROUPBOX        "",IDC_STATIC,10,5,305,20\r
-    PUSHBUTTON      "½Æ»s(&P)...",IDC_COPY,270,120,45,14\r
-END\r
-\r
-IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "»s§@¸Ë¸üÂI"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "½T©w",IDOK,20,81,50,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,85,81,50,14\r
-    PUSHBUTTON      "»¡©ú",9,150,81,50,14\r
-    LTEXT           "¥Ø¿ý¡G",IDC_STATIC,9,12,30,10\r
-    LTEXT           "®eÅé¡G",IDC_STATIC,9,28,25,10\r
-    LTEXT           "Cell¡G",IDC_STATIC,9,42,26,10\r
-    GROUPBOX        "",IDC_STATIC,40,52,115,20\r
-    LTEXT           "¿ï¶µ¡G",IDC_STATIC,9,59,25,10\r
-    CONTROL         "¼Ð·Ç",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON |\r
-                    WS_GROUP,45,59,41,10\r
-    CONTROL         "Ū¨ú / ¼g¤J",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,\r
-                    54,10\r
-END\r
-\r
-IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "·s¼W ACL ¶µ¥Ø"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,41,70,184,12,ES_AUTOHSCROLL\r
-    CONTROL         "r - Åª¨ú",IDC_READ,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,20,15,45,10\r
-    CONTROL         "l - ¬d¾\",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,20,25,50,10\r
-    CONTROL         "i - ´¡¤J",IDC_INSERT,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,20,35,50,10\r
-    CONTROL         "d - §R°£",IDC_DELETE,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,20,45,50,10\r
-    CONTROL         "w - ¼g¤J",IDC_WRITE,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,80,15,50,10\r
-    CONTROL         "k - Âê©w",IDC_LOCK2,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,80,25,55,10\r
-    CONTROL         "a - ºÞ²zªÌ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX |\r
-                    WS_TABSTOP,80,35,60,10\r
-    CONTROL         "¤@¯ë¶µ¥Ø",IDC_ADD_NORMAL_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10\r
-    CONTROL         "­t­±ªº¶µ¥Ø",IDC_ADD_NEGATIVE_ENTRY,"Button",\r
-                    BS_AUTORADIOBUTTON,161,26,59,10\r
-    PUSHBUTTON      "½T©w",IDOK,36,90,50,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,106,90,50,14\r
-    PUSHBUTTON      "»¡©ú",9,173,90,50,14\r
-    LTEXT           "¦WºÙ¡G",IDC_STATIC,10,72,27,8\r
-    GROUPBOX        "³\¥iÅv",IDC_STATIC,10,5,135,55\r
-    GROUPBOX        "¶µ¥ØÃþ«¬",IDC_STATIC,155,6,70,34\r
-END\r
-\r
-IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¤À³Î°Ï¸ê°T"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_TOTAL_SIZE,51,10,34,12,ES_AUTOHSCROLL | WS_DISABLED |\r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_BLOCKS_FREE,51,25,34,12,ES_AUTOHSCROLL | WS_DISABLED |\r
-                    NOT WS_TABSTOP\r
-    EDITTEXT        IDC_PERCENT_USED,51,40,34,12,ES_AUTOHSCROLL |\r
-                    WS_DISABLED | NOT WS_TABSTOP\r
-    DEFPUSHBUTTON   "Ãö³¬",IDOK,14,62,40,14\r
-    PUSHBUTTON      "»¡©ú",9,69,62,40,14\r
-    LTEXT           "¤w¨Ï¥Îªº %¡G",IDC_STATIC,4,42,51,8\r
-    LTEXT           "¥i¥Î°Ï¶ô¡G",IDC_STATIC,4,27,40,8\r
-    LTEXT           "Á`­p¤j¤p¡G",IDC_STATIC,4,12,46,8\r
-    LTEXT           "K ¦ì¤¸²Õ",IDC_STATIC,89,12,32,8\r
-    LTEXT           "K ¦ì¤¸²Õ",IDC_STATIC,88,27,31,8\r
-END\r
-\r
-IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "½Æ»s ACL"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY\r
-    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "ÂsÄý",IDC_BROWSE,195,25,35,15\r
-    CONTROL         "²M°£¥Ø«eªº¶µ¥Ø¡G",IDC_CLEAR,"Button",BS_AUTOCHECKBOX |\r
-                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10\r
-    DEFPUSHBUTTON   "½T©w",IDOK,20,65,50,14,WS_DISABLED\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,95,65,50,14\r
-    PUSHBUTTON      "»¡©ú",9,170,65,50,14\r
-    LTEXT           "½Æ»s¦Û¡G",IDC_STATIC,10,12,35,8\r
-    LTEXT           "½Æ»s¨ì¡G",IDC_STATIC,10,29,38,8\r
-END\r
-\r
-IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¦ó³B"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14\r
-    PUSHBUTTON      "»¡©ú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |\r
-                    WS_TABSTOP\r
-    LTEXT           "ÀÉ®× / ¥Ø¿ý",IDC_STATIC,10,10,47,8\r
-    LTEXT           "ÀɮצøªA¾¹",IDC_STATIC,128,10,44,8\r
-END\r
-\r
-IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "µ²ªG"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14\r
-    PUSHBUTTON      "»¡©ú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |\r
-                    WS_TABSTOP\r
-    LTEXT           "ÀÉ®× / ¥Ø¿ý",-1,10,10,45,8\r
-    LTEXT           "µ²ªG",IDC_RESULTS_LABEL,128,10,44,8\r
-END\r
-\r
-IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¸Ë¸üÂI"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14\r
-    PUSHBUTTON      "»¡©ú",9,180,145,50,14\r
-    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |\r
-                    WS_TABSTOP\r
-    LTEXT           "ÀÉ®×",IDC_STATIC,12,11,32,8\r
-    LTEXT           "®eÅé",IDC_STATIC,75,11,27,8\r
-    LTEXT           "Cell",IDC_STATIC,155,11,15,8\r
-    LTEXT           "Ãþ«¬",IDC_STATIC,230,11,20,8\r
-END\r
-\r
-IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¦øªA¾¹°±¤î¹B§@"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT |\r
-                    WS_VSCROLL | WS_HSCROLL\r
-    LTEXT           "³o¨Ç¦øªA¾¹¨ÌµM°±¤î¹B§@¡G",IDC_STATIC,10,7,147,8\r
-    DEFPUSHBUTTON   "½T©w",IDOK,82,140,45,15\r
-END\r
-\r
-IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |\r
-    WS_SYSMENU\r
-CAPTION "¦øªA¾¹ª¬ºA"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    CONTROL         "¥»ºÝ Cell",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON |\r
-                    WS_GROUP | WS_TABSTOP,20,20,50,8\r
-    CONTROL         "«ü©wªº Cell¡G",IDC_SPECIFIEDCELL,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10\r
-    CONTROL         "©Ò¦³ªº Cell",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON |\r
-                    WS_TABSTOP,20,65,74,10\r
-    CONTROL         "¤£­n±´¬d¦øªA¾¹",IDC_DONTPROBESERVERS,"Button",\r
-                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,80,10\r
-    PUSHBUTTON      "Åã¥Üª¬ºA",IDC_SHOWSTATUS,10,120,50,14\r
-    GROUPBOX        "Cell",IDC_STATIC,10,5,160,105,WS_GROUP\r
-    GROUPBOX        "",IDC_STATIC,20,80,90,20,WS_GROUP\r
-    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Ãö³¬",IDCANCEL,65,120,50,14\r
-    PUSHBUTTON      "»¡©ú",9,120,120,50,14\r
-END\r
-\r
-IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Ų§O"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS |\r
-                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |\r
-                    WS_TABSTOP\r
-    PUSHBUTTON      "¨ú±o°O¸¹",ID_GET_TOKENS,15,137,55,14\r
-    PUSHBUTTON      "±Ë±ó°O¸¹",ID_DISCARD_TOKENS,80,137,55,14\r
-    PUSHBUTTON      "Ãö³¬",IDCANCEL,145,137,55,14\r
-    PUSHBUTTON      "»¡©ú",9,215,137,55,14\r
-    LTEXT           "¨Ï¥ÎªÌ¦WºÙ",IDC_STATIC,10,9,51,8\r
-    LTEXT           "Cell ¦WºÙ",IDC_STATIC,104,9,33,8\r
-    LTEXT           "¹L´Á",IDC_STATIC,222,9,43,8\r
-END\r
-\r
-IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "¨ú±o°O¸¹"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL\r
-    DEFPUSHBUTTON   "½T©w",IDOK,20,70,35,14,WS_DISABLED\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,70,70,35,14\r
-    PUSHBUTTON      "»¡©ú",9,120,70,35,14\r
-    LTEXT           "¦WºÙ¡G",IDC_STATIC,7,12,32,8\r
-    LTEXT           "±K½X¡G",IDC_STATIC,7,32,34,8\r
-    LTEXT           "Cell¡G",IDC_STATIC,7,52,25,8\r
-END\r
-\r
-IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-EXSTYLE WS_EX_APPWINDOW\r
-CAPTION "±Ë±ó°O¸¹"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    DEFPUSHBUTTON   "½T©w",IDOK,29,40,35,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,79,40,35,14\r
-    PUSHBUTTON      "»¡©ú",9,129,40,35,14\r
-    LTEXT           "Cell¡G",IDC_STATIC,7,17,22,8\r
-    EDITTEXT        IDC_CELL_NAME,31,15,143,12,ES_AUTOHSCROLL\r
-END\r
-\r
-IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "¤l¸Ë¸ü"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT |\r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "·s¼W",IDC_ADD,202,20,45,14\r
-    PUSHBUTTON      "§R°£",IDC_DELETE,202,39,45,14,WS_DISABLED\r
-    PUSHBUTTON      "Åܧó",IDC_CHANGE,202,58,45,14,WS_DISABLED\r
-    LTEXT           "¤l¸Ë¸ü¡G",IDC_STATIC,10,10,50,8\r
-    PUSHBUTTON      "½T©w",IDOK,202,145,45,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,202,163,45,14\r
-END\r
-\r
-IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "·s¼W¤l¸Ë¸ü"\r
-FONT 9, "·s²Ó©úÅé"\r
-BEGIN\r
-    EDITTEXT        IDC_SHARE_NAME,66,8,147,12,ES_AUTOHSCROLL\r
-    EDITTEXT        IDC_PATH_NAME,66,23,147,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "½T©w",IDOK,22,53,45,14\r
-    PUSHBUTTON      "¨ú®ø",IDCANCEL,92,53,45,14\r
-    PUSHBUTTON      "»¡©ú",9,167,53,45,14\r
-    LTEXT           "¦@¥Î¦WºÙ¡G",IDC_STATIC,18,10,49,8\r
-    LTEXT           "¸ô®|¦WºÙ¡G",IDC_STATIC,19,25,43,8\r
-END\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE\r
-BEGIN\r
-    IDD_SERVERSTATUS, DIALOG\r
-    BEGIN\r
-        RIGHTMARGIN, 171\r
-    END\r
-\r
-    IDD_AUTHENTICATION, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 278\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 151\r
-    END\r
-\r
-    IDD_KLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 162\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 86\r
-    END\r
-\r
-    IDD_UNLOG_DIALOG, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 178\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 56\r
-    END\r
-\r
-    IDD_SUBMTINFO, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 247\r
-        BOTTOMMARGIN, 177\r
-    END\r
-\r
-    IDD_ADD_SUBMOUNT, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 7\r
-        RIGHTMARGIN, 228\r
-        TOPMARGIN, 7\r
-        BOTTOMMARGIN, 25\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    ID_ACL_CLEAN            "fs cleanacl"\r
-    ID_ACL_COPY             "fs copyacl"\r
-    ID_ACL_LIST             "fs listacl"\r
-    ID_ACL_SET              "fs setacl"\r
-    ID_VOLUME_CHECK         "fs checkvolumes"\r
-    ID_VOLUME_DISKFREE      "fs diskfree"\r
-    ID_VOLUME_EXAMINE       "fs examine"\r
-    ID_VOLUME_FLUSH         "fs flushvolume"\r
-    ID_VOLUME_QUOTA_BRIEF   "fs quota"\r
-    ID_VOLUME_QUOTA_FULL    "fs listquota"\r
-    ID_VOLUME_QUOTA_SET     "fs setvol"\r
-    ID_VOLUME_SET           "fs setvol"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    ID_FLUSH                "fs flush"\r
-    ID_WHEREIS              "fs whereis"\r
-    ID_SHOWCELL             "fs whichcell"\r
-    ID_MOUNTPOINT_SHOW      "fs lsmount"\r
-    ID_MOUNTPOINT_REMOVE    "fs rmmount"\r
-    ID_SHOW_SERVER          "fs whereis"\r
-    ID_AUTHENTICATE         "µn¤J©Îµn¥X AFS"\r
-    ID_SERVER_STATUS        "Àˬd¦øªA¾¹"\r
-    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"\r
-    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"\r
-    ID_MOUNTPOINT_MAKE      "fs mkmount"\r
-    IDS_FLUSH_FAILED        "µLªk¨R¼g§@¥Î¤¤ªºÀÉ®× %o"\r
-    IDS_FLUSH_ERROR         "¨R¼gÀÉ®× %o ®Éµo¥Í¿ù»~¡G %s"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_FLUSH_OK            "¶¶§Q¨R¼g©Ò¿ï¨úªºÀÉ®×"\r
-    IDS_CANT_GET_CELL       "§PÂ_ Cell ®Éµo¥Í¿ù»~¡G"\r
-    IDS_FLUSH_VOLUME_ERROR  "¨R¼g %o ®eÅé®Éµo¥Í¿ù»~¡G  %s"\r
-    IDS_FLUSH_VOLUME_OK     "¶¶§Q¨R¼g®eÅé"\r
-    IDS_WHERE_IS            "ÀÉ®× %o ¦b¥D¹q¸£ %s ¤W"\r
-    IDS_CLEANACL_NOT_SUPPORTED\r
-                            "µLªk²M°£ÀÉ®× %o ªº ACL¡GDFS ¦s¨ú²M³æ¤£¤ä´©²M°£ Acl "\r
-    IDS_ACL_IS_FINE         "%o ªº¦s¨ú²M³æ¨S¦³°ÝÃD"\r
-    IDS_CLEANACL_INVALID_ARG\r
-                            "µLªk²M°£ÀÉ®× %o ªº ACL¡G  ¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀÉ®×¥¼ºÞ¨î¡A©Î¬O¦s¨ú±±¨î²M³æ¤Wªº¨Ï¥ÎªÌ¤H¼Æ¹L¦h"\r
-    IDS_ANY_STRING          "%o"\r
-    IDS_CLEANACL_DONE       "¤w§R°£§@¼oªº ACL ¶µ¥Ø¡C"\r
-    ID_SUBMOUNTS            "«Ø¥ß©Î§R°£ AFS ¤l¸Ë¸ü"\r
-    IDS_GETRIGHTS_ERROR     "µLªkŪ¨ú¥Ø¿ý %o ªº¦s¨ú²M³æ¡G  %o"\r
-    IDS_DFSACL_ERROR        "µLªk¥H¦¹«ü¥O½s¿è DFS ACL"\r
-    IDS_SAVE_ACL_ERROR      "µLªkÀx¦s %o ªº ACL¡G  %o"\r
-    IDS_SAVE_ACL_EINVAL_ERROR\r
-                            "µLªkÀx¦s %o ªº ACL¡G¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀɮפ£¦b AFS¡B¦s¨ú±±¨î²M³æ¤Wªº¨Ï¥ÎªÌ¤H¼Æ¹L¦h¡A©Î¬O¸Õ¹Ï±N¤£¦s¦bªº¨Ï¥ÎªÌ·s¼W¨ì¦s¨ú±±¨î²M³æ"\r
-    IDS_ACL_READ_ERROR      "µLªkŪ¨ú %o ªº ACL¡G  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_NO_DFS_COPY_ACL     "µLªk±N ACL ½Æ»s¨ì¥Ø¿ý %o¡GDFS ¦s¨ú²M³æ¤£¤ä´©½Æ»s ACL "\r
-    IDS_COPY_ACL_EINVAL_ERROR\r
-                            "µLªk±N ACL ½Æ»s¨ì¥Ø¿ý %o¡G¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀɮפ£¦b AFS¡C"\r
-    IDS_COPY_ACL_ERROR      "µLªk±N ACL ½Æ»s¨ì %o¡G  %o"\r
-    IDS_NOT_MOUNT_POINT_ERROR "%o ¨Ã«D¸Ë¸üÂI¡C"\r
-    IDS_LIST_MOUNT_POINT_ERROR "¿ù»~¡G  %o"\r
-    IDS_MAKE_MP_NOT_AFS_ERROR "¸Ë¸üÂI¥²¶·¦b AFS Àɮרt²Î¤º«Ø¥ß"\r
-    IDS_MOUNT_POINT_ERROR   "«Ø¥ß¸Ë¸üÂI®Éµo¥Í¿ù»~¡G  %o"\r
-    IDS_ERROR               "¿ù»~¡G%o"\r
-    IDS_DELETED             "¤w¶¶§Q§R°£"\r
-    IDS_SET_QUOTA_ERROR     "³]©w°tÃB®Éµo¥Í¿ù»~¡G  %o"\r
-    ID_SUBMOUNTS_CREATE     "«Ø¥ß AFS ¤l¸Ë¸ü"\r
-    ID_SUBMOUNTS_EDIT       "·s¼W¡BÅܧó©Î¬O§R°£ AFS ¤l¸Ë¸ü"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_CHECK_SERVERS_ERROR "ÀˬdÀɮצøªA¾¹¾÷¾¹®Éµo¥Í¿ù»~¡G¡uAFS ¦øªA¾¹ºÞ²zµ{¦¡¡v¡G  %o"\r
-    IDS_ALL_SERVERS_RUNNING "©Ò¦³¦øªA¾¹³£¦b°õ¦æ¤¤¡C"\r
-    IDS_CHECK_VOLUMES_OK    "¤wÀˬd©Ò¦³®eÅéID/¦WºÙ¹ïÀ³¡C"\r
-    IDS_CHECK_VOLUMES_ERROR "Àˬd®eÅéID/¦WºÙ¹ïÀ³®Éµo¥Í¿ù»~¡G  %o"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_ACL_ENTRY_NAME_IN_USE "±z©Ò¿ï¾Üªº¦WºÙ¤w¸g¦s¦b¡C½Ð¿é¤J¤£¦Pªº¦WºÙ¡C"\r
-    IDS_REALLY_DEL_MOUNT_POINTS "±z½T©w­n²¾°£©Ò¿ï¨úªº¸Ë¸üÂI¶Ü¡H"\r
-    IDS_DIR_DOES_NOT_EXIST_ERROR "¥Ø¿ý '%o' ¨Ã¤£¦s¦b¡C"\r
-    IDS_CLEANACL_MSG        "±N§R°£¤w§@¼oªº ACL ¡I"\r
-    IDS_COPY_ACL_OK         "¤w¶¶§Q³Æ¥÷ ACL¡C"\r
-    IDS_GET_TOKENS_NO_AFS_SERVICE\r
-                            "µLªkŪ¨ú°O¸¹¸ê°T¡GAFS ªA°Èµ{¦¡¥i¯à©|¥¼±Ò°Ê¡C"\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR\r
-                            "µLªkŪ¨ú°O¸¹¸ê°T¡G«D¹w´Áªº¿ù»~¡Aµ{¦¡½X %d¡C"\r
-    IDS_GET_TOKENS_UNEXPECTED_ERROR2\r
-                            "µLªkŪ¨ú°O¸¹¸ê°T¡G«D¹w´Áªº¿ù»~¡AªA°Èµ{¦¡ %s.%s.%s¡Aµ{¦¡½X %d¡C"\r
-    IDS_ENTER_QUOTA         "½Ð¿é¤J¦³®Äªº°tÃB¡C"\r
-    IDS_AUTHENTICATION_ITEM "Ų§O(&A)..."\r
-    IDS_ACLS_ITEM           "¦s¨ú±±¨î²M³æ(&C)..."\r
-    IDS_VOL_PART_ITEM       "®eÅé / ¤À³Î°Ï(&V)"\r
-    IDS_VOL_PART_PROPS_ITEM "¤º®e(&P)"\r
-    IDS_VOL_PART_REFRESH_ITEM "­«·s¾ã²z¦WºÙ/ID ¹ïÀ³(&R)"\r
-    IDS_MOUNT_POINT_ITEM    "¸Ë¸üÂI(&M)"\r
-    IDS_MP_SHOW_ITEM        "Åã¥Ü(&S)..."\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    AFX_IDS_APP_TITLE       "AFS ¥Î¤áºÝ"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_MP_REMOVE_ITEM      "²¾°£(&R)..."\r
-    IDS_MP_MAKE_ITEM        "»s§@(&M)..."\r
-    IDS_FLUSH_FILE_DIR_ITEM "¨R¼gÀÉ®× / ¥Ø¿ý(&F)"\r
-    IDS_FLUSH_VOLUME_ITEM   "¨R¼g®eÅé(&U)"\r
-    IDS_SHOW_FILE_SERVERS_ITEM "Åã¥ÜÀɮצøªA¾¹(&F)..."\r
-    IDS_SHOW_CELL_ITEM      "Åã¥Ü Cell (&C)..."\r
-    IDS_SHOW_SERVER_STATUS_ITEM "Åã¥Ü¦øªA¾¹ª¬ºA..."\r
-    IDS_AFS_ITEM            "AFS(&A)"\r
-    IDS_SUBMOUNTS_ITEM      "¤l¸Ë¸ü(&B)"\r
-    IDS_GET_SUBMT_INFO_ERROR "µLªkŪ¨ú¦@¨É¦WºÙ %o ªº¤l¸Ë¸ü¸ê°T¡C"\r
-    IDS_REALLY_DELETE_SUBMT "§R°£¦@¨É¦WºÙ %o ¶Ü¡H"\r
-    IDS_SUBMT_SAVE_FAILED   "±z¹ï¤l¸Ë¸ü¸ê®Æ®w©Ò§@ªºÅܧóµL®Ä¡C"\r
-    IDS_SUBMOUNTS_CREATE_ITEM "·s¼W(&A)"\r
-    IDS_SUBMOUNTS_EDIT_ITEM "½s¿è(&E)..."\r
-    IDS_EDIT_PATH_NAME      "½s¿è¸ô®|¦WºÙ"\r
-    IDS_SHOW_CELL           "Åã¥Ü Cell"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-BEGIN\r
-    IDS_SHOW_CELL_COLUMN    "Cell"\r
-    IDS_SHOW_FS             "Åã¥ÜÀɮצøªA¾¹"\r
-    IDS_SHOW_FS_COLUMN      "ÀɮצøªA¾¹"\r
-    IDS_REMOVE_MP           "²¾°£¸Ë¸üÂI"\r
-    IDS_REMOVE_MP_COLUMN    "µ²ªG"\r
-END\r
-\r
-#endif    // Chinese (Taiwan) resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-#define _AFX_NO_SPLITTER_RESOURCES\r
-#define _AFX_NO_OLE_RESOURCES\r
-#define _AFX_NO_TRACKER_RESOURCES\r
-#define _AFX_NO_PROPERTY_RESOURCES\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)\r
-#ifdef _WIN32\r
-LANGUAGE 4, 1\r
-#endif\r
-#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources\r
-#include "afxres.rc"         // Standard components\r
-#endif\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Chinese (Taiwan) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)
+#ifdef _WIN32
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 4, 1\r\n"
+    "#endif\r\n"
+    "#include ""afs_shl_ext.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU_FILE MENU DISCARDABLE
+BEGIN
+    MENUITEM "Ų§O...",                     IDM_AUTHENTICATION
+    MENUITEM "¦s¨ú±±¨î²M³æ...",             IDM_ACL_SET
+    POPUP "®eÅé/¤À³Î°Ï(&V)"
+    BEGIN
+        MENUITEM "¤º®e(&P)...",                 IDM_VOLUME_PROPERTIES
+        MENUITEM "­«·s¾ã²z¦WºÙ/ID ¹ïÀ³(&R)",    IDM_VOLUMEPARTITION_UPDATENAMEIDTABLE
+
+    END
+    POPUP "¸Ë¸üÂI(&M)"
+    BEGIN
+        MENUITEM "Åã¥Ü(&S)...",                 IDM_MOUNTPOINT_SHOW
+        MENUITEM "²¾°£(&R)...",                 IDM_MOUNTPOINT_REMOVE
+        MENUITEM "»s§@(&M)...",                 IDM_MOUNTPOINT_MAKE
+    END
+    MENUITEM "¨R¼gÀÉ®×/¥Ø¿ý(&F)",           IDM_FLUSH
+    MENUITEM "¨R¼g®eÅé(&U)",                IDM_FLUSH_VOLUME
+    MENUITEM "Åã¥ÜÀɮצøªA¾¹(&F)...",       IDM_SHOW_SERVER
+    MENUITEM "Åã¥Ü Cell (&C)...",           IDM_SHOWCELL
+    MENUITEM "Åã¥Ü¦øªA¾¹ª¬ºA...",           IDM_SERVER_STATUS
+    MENUITEM "Remove SymLink",              IDM_REMOVE_SYMLINK
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME_INFO DIALOG DISCARDABLE  0, 0, 349, 173
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
+    WS_SYSMENU
+CAPTION "®eÅé¸ê°T"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    DEFPUSHBUTTON   "½T©w",IDOK,55,150,50,14,WS_DISABLED
+    PUSHBUTTON      "»¡©ú",9,235,150,50,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,145,150,50,14
+    LISTBOX         IDC_LIST,10,20,330,100,LBS_SORT | LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "ÀÉ®× / ¥Ø¿ý",IDC_STATIC,10,10,44,10
+    LTEXT           "¦WºÙ",IDC_STATIC,90,10,20,8
+    LTEXT           "°tÃB",IDC_STATIC,225,10,19,8
+    LTEXT           "¤w¨Ï¥Îªº",IDC_STATIC,270,10,20,8
+    LTEXT           "¤w¨Ï¥Îªº % (U)",IDC_STATIC,305,10,25,8
+    LTEXT           "ID",IDC_STATIC,175,10,10,8
+    LTEXT           "·s°tÃB¡G",IDC_STATIC,10,127,40,10
+    EDITTEXT        IDC_NEW_QUOTA,55,126,50,12,ES_AUTOHSCROLL | WS_DISABLED
+    PUSHBUTTON      "Åã¥Ü¤À³Î°Ï¸ê°T",IDC_PARTITION_INFO,216,125,69,14,
+                    WS_DISABLED
+    LTEXT           "¤d¦ì¤¸²Õ",IDC_STATIC,122,128,51,10
+    CONTROL         "Spin1",IDC_QUOTA_SPIN,"msctls_updown32",UDS_WRAP |
+                    UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS |
+                    WS_DISABLED,106,125,10,14
+END
+
+IDD_SET_AFS_ACL DIALOG DISCARDABLE  0, 0, 325, 228
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "³]©w AFS ACL"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    LTEXT           "",IDC_DIR_NAME,51,12,259,10
+    LISTBOX         IDC_NORMAL_RIGHTS,10,46,175,75,LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL |
+                    WS_HSCROLL | WS_TABSTOP
+    LISTBOX         IDC_NEGATIVE_ENTRIES,10,141,175,75,LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL |
+                    WS_HSCROLL | WS_TABSTOP
+    CONTROL         "r - Åª¨ú",IDC_READ,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,52,55,10
+    CONTROL         "w - ¼g¤J",IDC_WRITE,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,111,55,10
+    CONTROL         "l - ¬d¾\",IDC_LOOKUP,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,66,55,10
+    CONTROL         "d - §R°£",IDC_DELETE,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,96,55,10
+    CONTROL         "i - ´¡¤J",IDC_INSERT,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,81,55,10
+    CONTROL         "k - Âê©w",IDC_LOCK,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,126,55,10
+    CONTROL         "a - ºÞ²zªÌ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,200,141,55,10
+    PUSHBUTTON      "·s¼W(&A)...",IDC_ADD,270,45,45,14
+    PUSHBUTTON      "²¾°£(&R)",IDC_REMOVE,270,70,45,14,WS_DISABLED
+    PUSHBUTTON      "²M°£(&C)",IDC_CLEAN,270,95,45,14
+    DEFPUSHBUTTON   "½T©w(&O)",IDOK,270,150,45,14
+    PUSHBUTTON      "¨ú®ø(&N)",IDCANCEL,270,175,45,14
+    PUSHBUTTON      "»¡©ú(&H)",9,270,201,45,14
+    LTEXT           "¥Ø¿ý¡G",IDC_STATIC,15,12,30,10
+    GROUPBOX        "³\¥iÅv",IDC_STATIC,195,41,65,115
+    LTEXT           "¤@¯ë",IDC_STATIC,10,30,23,8
+    LTEXT           "¦WºÙ",IDC_COLUMN_3,69,38,20,8
+    LTEXT           "³\¥iÅv",IDC_STATIC,10,38,37,8
+    LTEXT           "­t­±ªº",IDC_STATIC,10,125,30,8
+    LTEXT           "³\¥iÅv",IDC_STATIC,10,133,38,8
+    LTEXT           "¦WºÙ",IDC_COLUMN_4,69,133,20,8
+    GROUPBOX        "",IDC_STATIC,10,5,305,20
+    PUSHBUTTON      "½Æ»s(&P)...",IDC_COPY,270,120,45,14
+END
+
+IDD_MAKE_MOUNT_POINT DIALOG DISCARDABLE  0, 0, 219, 103
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "»s§@¸Ë¸üÂI"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_DIR,40,10,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_VOLUME,40,25,170,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL,40,40,170,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "½T©w",IDOK,20,81,50,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,85,81,50,14
+    PUSHBUTTON      "»¡©ú",9,150,81,50,14
+    LTEXT           "¥Ø¿ý¡G",IDC_STATIC,9,12,30,10
+    LTEXT           "®eÅé¡G",IDC_STATIC,9,28,25,10
+    LTEXT           "Cell¡G",IDC_STATIC,9,42,26,10
+    GROUPBOX        "",IDC_STATIC,40,52,115,20
+    LTEXT           "¿ï¶µ¡G",IDC_STATIC,9,59,25,10
+    CONTROL         "¼Ð·Ç",IDC_REGULAR,"Button",BS_AUTORADIOBUTTON |
+                    WS_GROUP,45,59,41,10
+    CONTROL         "Ū¨ú / ¼g¤J",IDC_RW,"Button",BS_AUTORADIOBUTTON,100,59,
+                    54,10
+END
+
+IDD_ADD_ACL DIALOG DISCARDABLE  0, 0, 235, 113
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "·s¼W ACL ¶µ¥Ø"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_NAME,41,70,184,12,ES_AUTOHSCROLL
+    CONTROL         "r - Åª¨ú",IDC_READ,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,20,15,45,10
+    CONTROL         "l - ¬d¾\",IDC_LOOKUP2,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,20,25,50,10
+    CONTROL         "i - ´¡¤J",IDC_INSERT,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,20,35,50,10
+    CONTROL         "d - §R°£",IDC_DELETE,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,20,45,50,10
+    CONTROL         "w - ¼g¤J",IDC_WRITE,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,80,15,50,10
+    CONTROL         "k - Âê©w",IDC_LOCK2,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,80,25,55,10
+    CONTROL         "a - ºÞ²zªÌ",IDC_ADMINISTER,"Button",BS_AUTOCHECKBOX |
+                    WS_TABSTOP,80,35,60,10
+    CONTROL         "¤@¯ë¶µ¥Ø",IDC_ADD_NORMAL_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP,161,16,54,10
+    CONTROL         "­t­±ªº¶µ¥Ø",IDC_ADD_NEGATIVE_ENTRY,"Button",
+                    BS_AUTORADIOBUTTON,161,26,59,10
+    PUSHBUTTON      "½T©w",IDOK,36,90,50,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,106,90,50,14
+    PUSHBUTTON      "»¡©ú",9,173,90,50,14
+    LTEXT           "¦WºÙ¡G",IDC_STATIC,10,72,27,8
+    GROUPBOX        "³\¥iÅv",IDC_STATIC,10,5,135,55
+    GROUPBOX        "¶µ¥ØÃþ«¬",IDC_STATIC,155,6,70,34
+END
+
+IDD_PARTITION_INFO DIALOG DISCARDABLE  0, 0, 123, 83
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¤À³Î°Ï¸ê°T"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_TOTAL_SIZE,51,10,34,12,ES_AUTOHSCROLL | WS_DISABLED |
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_BLOCKS_FREE,51,25,34,12,ES_AUTOHSCROLL | WS_DISABLED |
+                    NOT WS_TABSTOP
+    EDITTEXT        IDC_PERCENT_USED,51,40,34,12,ES_AUTOHSCROLL |
+                    WS_DISABLED | NOT WS_TABSTOP
+    DEFPUSHBUTTON   "Ãö³¬",IDOK,14,62,40,14
+    PUSHBUTTON      "»¡©ú",9,69,62,40,14
+    LTEXT           "¤w¨Ï¥Îªº %¡G",IDC_STATIC,4,42,51,8
+    LTEXT           "¥i¥Î°Ï¶ô¡G",IDC_STATIC,4,27,40,8
+    LTEXT           "Á`­p¤j¤p¡G",IDC_STATIC,4,12,46,8
+    LTEXT           "K ¦ì¤¸²Õ",IDC_STATIC,89,12,32,8
+    LTEXT           "K ¦ì¤¸²Õ",IDC_STATIC,88,27,31,8
+END
+
+IDD_COPY_ACL DIALOG DISCARDABLE  0, 0, 239, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "½Æ»s ACL"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_FROM_DIR,55,10,175,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_TO_DIR,55,26,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "ÂsÄý",IDC_BROWSE,195,25,35,15
+    CONTROL         "²M°£¥Ø«eªº¶µ¥Ø¡G",IDC_CLEAR,"Button",BS_AUTOCHECKBOX |
+                    BS_LEFTTEXT | WS_TABSTOP,10,46,82,10
+    DEFPUSHBUTTON   "½T©w",IDOK,20,65,50,14,WS_DISABLED
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,95,65,50,14
+    PUSHBUTTON      "»¡©ú",9,170,65,50,14
+    LTEXT           "½Æ»s¦Û¡G",IDC_STATIC,10,12,35,8
+    LTEXT           "½Æ»s¨ì¡G",IDC_STATIC,10,29,38,8
+END
+
+IDD_WHERE_IS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¦ó³B"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14
+    PUSHBUTTON      "»¡©ú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |
+                    WS_TABSTOP
+    LTEXT           "ÀÉ®× / ¥Ø¿ý",IDC_STATIC,10,10,47,8
+    LTEXT           "ÀɮצøªA¾¹",IDC_STATIC,128,10,44,8
+END
+
+IDD_RESULTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "µ²ªG"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14
+    PUSHBUTTON      "»¡©ú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |
+                    WS_TABSTOP
+    LTEXT           "ÀÉ®× / ¥Ø¿ý",-1,10,10,45,8
+    LTEXT           "µ²ªG",IDC_RESULTS_LABEL,128,10,44,8
+END
+
+IDD_MOUNT_POINTS DIALOG DISCARDABLE  0, 0, 299, 168
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¸Ë¸üÂI"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    DEFPUSHBUTTON   "Ãö³¬",IDOK,65,145,50,14
+    PUSHBUTTON      "»¡©ú",9,180,145,50,14
+    LISTBOX         IDC_LIST,10,20,280,115,LBS_SORT | LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |
+                    WS_TABSTOP
+    LTEXT           "ÀÉ®×",IDC_STATIC,12,11,32,8
+    LTEXT           "®eÅé",IDC_STATIC,75,11,27,8
+    LTEXT           "Cell",IDC_STATIC,155,11,15,8
+    LTEXT           "Ãþ«¬",IDC_STATIC,230,11,20,8
+END
+
+IDD_DOWN_SERVERS DIALOG DISCARDABLE  0, 0, 209, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "¦øªA¾¹°±¤î¹B§@"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    LISTBOX         1029,10,20,190,110,LBS_SORT | LBS_NOINTEGRALHEIGHT |
+                    WS_VSCROLL | WS_HSCROLL
+    LTEXT           "³o¨Ç¦øªA¾¹¨ÌµM°±¤î¹B§@¡G",IDC_STATIC,10,7,147,8
+    DEFPUSHBUTTON   "½T©w",IDOK,82,140,45,15
+END
+
+IDD_SERVERSTATUS DIALOG DISCARDABLE  0, 0, 179, 143
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
+    WS_SYSMENU
+CAPTION "¦øªA¾¹ª¬ºA"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    CONTROL         "¥»ºÝ Cell",IDC_LOCALCELL,"Button",BS_AUTORADIOBUTTON |
+                    WS_GROUP | WS_TABSTOP,20,20,50,8
+    CONTROL         "«ü©wªº Cell¡G",IDC_SPECIFIEDCELL,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,20,36,60,10
+    CONTROL         "©Ò¦³ªº Cell",IDC_ALL_CELLS,"Button",BS_AUTORADIOBUTTON |
+                    WS_TABSTOP,20,65,74,10
+    CONTROL         "¤£­n±´¬d¦øªA¾¹",IDC_DONTPROBESERVERS,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,24,87,80,10
+    PUSHBUTTON      "Åã¥Üª¬ºA",IDC_SHOWSTATUS,10,120,50,14
+    GROUPBOX        "Cell",IDC_STATIC,10,5,160,105,WS_GROUP
+    GROUPBOX        "",IDC_STATIC,20,80,90,20,WS_GROUP
+    EDITTEXT        IDC_CELL_NAME,30,47,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Ãö³¬",IDCANCEL,65,120,50,14
+    PUSHBUTTON      "»¡©ú",9,120,120,50,14
+END
+
+IDD_AUTHENTICATION DIALOG DISCARDABLE  0, 0, 285, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ų§O"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    LISTBOX         IDC_TOKEN_LIST,10,18,265,110,LBS_SORT | LBS_USETABSTOPS |
+                    LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL |
+                    WS_TABSTOP
+    PUSHBUTTON      "¨ú±o°O¸¹",ID_GET_TOKENS,15,137,55,14
+    PUSHBUTTON      "±Ë±ó°O¸¹",ID_DISCARD_TOKENS,80,137,55,14
+    PUSHBUTTON      "Ãö³¬",IDCANCEL,145,137,55,14
+    PUSHBUTTON      "»¡©ú",9,215,137,55,14
+    LTEXT           "¨Ï¥ÎªÌ¦WºÙ",IDC_STATIC,10,9,51,8
+    LTEXT           "Cell ¦WºÙ",IDC_STATIC,104,9,33,8
+    LTEXT           "¹L´Á",IDC_STATIC,222,9,43,8
+END
+
+IDD_KLOG_DIALOG DIALOGEX 0, 0, 169, 93
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "¨ú±o°O¸¹"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_NAME,40,10,115,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PASSWORD,40,30,115,12,ES_PASSWORD | ES_AUTOHSCROLL
+    EDITTEXT        IDC_CELL_NAME,40,50,115,12,ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "½T©w",IDOK,20,70,35,14,WS_DISABLED
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,70,70,35,14
+    PUSHBUTTON      "»¡©ú",9,120,70,35,14
+    LTEXT           "¦WºÙ¡G",IDC_STATIC,7,12,32,8
+    LTEXT           "±K½X¡G",IDC_STATIC,7,32,34,8
+    LTEXT           "Cell¡G",IDC_STATIC,7,52,25,8
+END
+
+IDD_UNLOG_DIALOG DIALOGEX 0, 0, 185, 63
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "±Ë±ó°O¸¹"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    DEFPUSHBUTTON   "½T©w",IDOK,29,40,35,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,79,40,35,14
+    PUSHBUTTON      "»¡©ú",9,129,40,35,14
+    LTEXT           "Cell¡G",IDC_STATIC,7,17,22,8
+    EDITTEXT        IDC_CELL_NAME,31,15,143,12,ES_AUTOHSCROLL
+END
+
+IDD_SUBMTINFO DIALOG DISCARDABLE  0, 0, 257, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "¤l¸Ë¸ü"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    LISTBOX         IDC_LIST,10,20,183,157,LBS_SORT | LBS_NOINTEGRALHEIGHT |
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    PUSHBUTTON      "·s¼W",IDC_ADD,202,20,45,14
+    PUSHBUTTON      "§R°£",IDC_DELETE,202,39,45,14,WS_DISABLED
+    PUSHBUTTON      "Åܧó",IDC_CHANGE,202,58,45,14,WS_DISABLED
+    LTEXT           "¤l¸Ë¸ü¡G",IDC_STATIC,10,10,50,8
+    PUSHBUTTON      "½T©w",IDOK,202,145,45,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,202,163,45,14
+END
+
+IDD_ADD_SUBMOUNT DIALOG DISCARDABLE  0, 0, 235, 79
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "·s¼W¤l¸Ë¸ü"
+FONT 9, "·s²Ó©úÅé"
+BEGIN
+    EDITTEXT        IDC_SHARE_NAME,66,8,147,12,ES_AUTOHSCROLL
+    EDITTEXT        IDC_PATH_NAME,66,23,147,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "½T©w",IDOK,22,53,45,14
+    PUSHBUTTON      "¨ú®ø",IDCANCEL,92,53,45,14
+    PUSHBUTTON      "»¡©ú",9,167,53,45,14
+    LTEXT           "¦@¥Î¦WºÙ¡G",IDC_STATIC,18,10,49,8
+    LTEXT           "¸ô®|¦WºÙ¡G",IDC_STATIC,19,25,43,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+    IDD_SERVERSTATUS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 171
+    END
+
+    IDD_AUTHENTICATION, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 278
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 151
+    END
+
+    IDD_KLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 162
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 86
+    END
+
+    IDD_UNLOG_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 178
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 56
+    END
+
+    IDD_SUBMTINFO, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 247
+        BOTTOMMARGIN, 177
+    END
+
+    IDD_ADD_SUBMOUNT, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 228
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 25
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    ID_ACL_CLEAN            "fs cleanacl"
+    ID_ACL_COPY             "fs copyacl"
+    ID_ACL_LIST             "fs listacl"
+    ID_ACL_SET              "fs setacl"
+    ID_VOLUME_CHECK         "fs checkvolumes"
+    ID_VOLUME_DISKFREE      "fs diskfree"
+    ID_VOLUME_EXAMINE       "fs examine"
+    ID_VOLUME_FLUSH         "fs flushvolume"
+    ID_VOLUME_QUOTA_BRIEF   "fs quota"
+    ID_VOLUME_QUOTA_FULL    "fs listquota"
+    ID_VOLUME_QUOTA_SET     "fs setvol"
+    ID_VOLUME_SET           "fs setvol"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    ID_FLUSH                "fs flush"
+    ID_WHEREIS              "fs whereis"
+    ID_SHOWCELL             "fs whichcell"
+    ID_MOUNTPOINT_SHOW      "fs lsmount"
+    ID_MOUNTPOINT_REMOVE    "fs rmmount"
+    ID_SHOW_SERVER          "fs whereis"
+    ID_AUTHENTICATE         "µn¤J©Îµn¥X AFS"
+    ID_SERVER_STATUS        "Àˬd¦øªA¾¹"
+    ID_VOLUME_PROPERTIES    "fs listquota, diskfree, examine, quota, setquota, setvol"
+    ID_VOLUMEPARTITION_UPDATENAMEIDTABLE "fs checkvolumes"
+    ID_MOUNTPOINT_MAKE      "fs mkmount"
+    IDS_FLUSH_FAILED        "µLªk¨R¼g§@¥Î¤¤ªºÀÉ®× %o"
+    IDS_FLUSH_ERROR         "¨R¼gÀÉ®× %o ®Éµo¥Í¿ù»~¡G %s"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_FLUSH_OK            "¶¶§Q¨R¼g©Ò¿ï¨úªºÀÉ®×"
+    IDS_CANT_GET_CELL       "§PÂ_ Cell ®Éµo¥Í¿ù»~¡G"
+    IDS_FLUSH_VOLUME_ERROR  "¨R¼g %o ®eÅé®Éµo¥Í¿ù»~¡G  %s"
+    IDS_FLUSH_VOLUME_OK     "¶¶§Q¨R¼g®eÅé"
+    IDS_WHERE_IS            "ÀÉ®× %o ¦b¥D¹q¸£ %s ¤W"
+    IDS_CLEANACL_NOT_SUPPORTED
+                            "µLªk²M°£ÀÉ®× %o ªº ACL¡GDFS ¦s¨ú²M³æ¤£¤ä´©²M°£ Acl "
+    IDS_ACL_IS_FINE         "%o ªº¦s¨ú²M³æ¨S¦³°ÝÃD"
+    IDS_CLEANACL_INVALID_ARG
+                            "µLªk²M°£ÀÉ®× %o ªº ACL¡G  ¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀÉ®×¥¼ºÞ¨î¡A©Î¬O¦s¨ú±±¨î²M³æ¤Wªº¨Ï¥ÎªÌ¤H¼Æ¹L¦h"
+    IDS_ANY_STRING          "%o"
+    IDS_CLEANACL_DONE       "¤w§R°£§@¼oªº ACL ¶µ¥Ø¡C"
+    ID_SUBMOUNTS            "«Ø¥ß©Î§R°£ AFS ¤l¸Ë¸ü"
+    IDS_GETRIGHTS_ERROR     "µLªkŪ¨ú¥Ø¿ý %o ªº¦s¨ú²M³æ¡G  %o"
+    IDS_DFSACL_ERROR        "µLªk¥H¦¹«ü¥O½s¿è DFS ACL"
+    IDS_SAVE_ACL_ERROR      "µLªkÀx¦s %o ªº ACL¡G  %o"
+    IDS_SAVE_ACL_EINVAL_ERROR
+                            "µLªkÀx¦s %o ªº ACL¡G¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀɮפ£¦b AFS¡B¦s¨ú±±¨î²M³æ¤Wªº¨Ï¥ÎªÌ¤H¼Æ¹L¦h¡A©Î¬O¸Õ¹Ï±N¤£¦s¦bªº¨Ï¥ÎªÌ·s¼W¨ì¦s¨ú±±¨î²M³æ"
+    IDS_ACL_READ_ERROR      "µLªkŪ¨ú %o ªº ACL¡G  %o"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_NO_DFS_COPY_ACL     "µLªk±N ACL ½Æ»s¨ì¥Ø¿ý %o¡GDFS ¦s¨ú²M³æ¤£¤ä´©½Æ»s ACL "
+    IDS_COPY_ACL_EINVAL_ERROR
+                            "µLªk±N ACL ½Æ»s¨ì¥Ø¿ý %o¡G¤Þ¼ÆµL®Ä¡A¥i¯àªº­ì¦]¥]¬A¡GÀɮפ£¦b AFS¡C"
+    IDS_COPY_ACL_ERROR      "µLªk±N ACL ½Æ»s¨ì %o¡G  %o"
+    IDS_NOT_MOUNT_POINT_ERROR "%o ¨Ã«D¸Ë¸üÂI¡C"
+    IDS_LIST_MOUNT_POINT_ERROR "¿ù»~¡G  %o"
+    IDS_MAKE_MP_NOT_AFS_ERROR "¸Ë¸üÂI¥²¶·¦b AFS Àɮרt²Î¤º«Ø¥ß"
+    IDS_MOUNT_POINT_ERROR   "«Ø¥ß¸Ë¸üÂI®Éµo¥Í¿ù»~¡G  %o"
+    IDS_ERROR               "¿ù»~¡G%o"
+    IDS_DELETED             "¤w¶¶§Q§R°£"
+    IDS_SET_QUOTA_ERROR     "³]©w°tÃB®Éµo¥Í¿ù»~¡G  %o"
+    ID_SUBMOUNTS_CREATE     "«Ø¥ß AFS ¤l¸Ë¸ü"
+    ID_SUBMOUNTS_EDIT       "·s¼W¡BÅܧó©Î¬O§R°£ AFS ¤l¸Ë¸ü"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_CHECK_SERVERS_ERROR "ÀˬdÀɮצøªA¾¹¾÷¾¹®Éµo¥Í¿ù»~¡G¡uAFS ¦øªA¾¹ºÞ²zµ{¦¡¡v¡G  %o"
+    IDS_ALL_SERVERS_RUNNING "©Ò¦³¦øªA¾¹³£¦b°õ¦æ¤¤¡C"
+    IDS_CHECK_VOLUMES_OK    "¤wÀˬd©Ò¦³®eÅéID/¦WºÙ¹ïÀ³¡C"
+    IDS_CHECK_VOLUMES_ERROR "Àˬd®eÅéID/¦WºÙ¹ïÀ³®Éµo¥Í¿ù»~¡G  %o"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_ACL_ENTRY_NAME_IN_USE "±z©Ò¿ï¾Üªº¦WºÙ¤w¸g¦s¦b¡C½Ð¿é¤J¤£¦Pªº¦WºÙ¡C"
+    IDS_REALLY_DEL_MOUNT_POINTS "±z½T©w­n²¾°£©Ò¿ï¨úªº¸Ë¸üÂI¶Ü¡H"
+    IDS_DIR_DOES_NOT_EXIST_ERROR "¥Ø¿ý '%o' ¨Ã¤£¦s¦b¡C"
+    IDS_CLEANACL_MSG        "±N§R°£¤w§@¼oªº ACL ¡I"
+    IDS_COPY_ACL_OK         "¤w¶¶§Q³Æ¥÷ ACL¡C"
+    IDS_GET_TOKENS_NO_AFS_SERVICE
+                            "µLªkŪ¨ú°O¸¹¸ê°T¡GAFS ªA°Èµ{¦¡¥i¯à©|¥¼±Ò°Ê¡C"
+    IDS_GET_TOKENS_UNEXPECTED_ERROR
+                            "µLªkŪ¨ú°O¸¹¸ê°T¡G«D¹w´Áªº¿ù»~¡Aµ{¦¡½X %d¡C"
+    IDS_GET_TOKENS_UNEXPECTED_ERROR2
+                            "µLªkŪ¨ú°O¸¹¸ê°T¡G«D¹w´Áªº¿ù»~¡AªA°Èµ{¦¡ %s.%s.%s¡Aµ{¦¡½X %d¡C"
+    IDS_ENTER_QUOTA         "½Ð¿é¤J¦³®Äªº°tÃB¡C"
+    IDS_AUTHENTICATION_ITEM "Ų§O(&A)..."
+    IDS_ACLS_ITEM           "¦s¨ú±±¨î²M³æ(&C)..."
+    IDS_VOL_PART_ITEM       "®eÅé / ¤À³Î°Ï(&V)"
+    IDS_VOL_PART_PROPS_ITEM "¤º®e(&P)"
+    IDS_VOL_PART_REFRESH_ITEM "­«·s¾ã²z¦WºÙ/ID ¹ïÀ³(&R)"
+    IDS_MOUNT_POINT_ITEM    "¸Ë¸üÂI(&M)"
+    IDS_MP_SHOW_ITEM        "Åã¥Ü(&S)..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    AFX_IDS_APP_TITLE       "AFS ¥Î¤áºÝ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_MP_REMOVE_ITEM      "²¾°£(&R)..."
+    IDS_MP_MAKE_ITEM        "»s§@(&M)..."
+    IDS_FLUSH_FILE_DIR_ITEM "¨R¼gÀÉ®× / ¥Ø¿ý(&F)"
+    IDS_FLUSH_VOLUME_ITEM   "¨R¼g®eÅé(&U)"
+    IDS_SHOW_FILE_SERVERS_ITEM "Åã¥ÜÀɮצøªA¾¹(&F)..."
+    IDS_SHOW_CELL_ITEM      "Åã¥Ü Cell (&C)..."
+    IDS_SHOW_SERVER_STATUS_ITEM "Åã¥Ü¦øªA¾¹ª¬ºA..."
+    IDS_AFS_ITEM            "AFS(&A)"
+    IDS_SUBMOUNTS_ITEM      "¤l¸Ë¸ü(&B)"
+    IDS_GET_SUBMT_INFO_ERROR "µLªkŪ¨ú¦@¨É¦WºÙ %o ªº¤l¸Ë¸ü¸ê°T¡C"
+    IDS_REALLY_DELETE_SUBMT "§R°£¦@¨É¦WºÙ %o ¶Ü¡H"
+    IDS_SUBMT_SAVE_FAILED   "±z¹ï¤l¸Ë¸ü¸ê®Æ®w©Ò§@ªºÅܧóµL®Ä¡C"
+    IDS_SUBMOUNTS_CREATE_ITEM "·s¼W(&A)"
+    IDS_SUBMOUNTS_EDIT_ITEM "½s¿è(&E)..."
+    IDS_EDIT_PATH_NAME      "½s¿è¸ô®|¦WºÙ"
+    IDS_SHOW_CELL           "Åã¥Ü Cell"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+    IDS_SHOW_CELL_COLUMN    "Cell"
+    IDS_SHOW_FS             "Åã¥ÜÀɮצøªA¾¹"
+    IDS_SHOW_FS_COLUMN      "ÀɮצøªA¾¹"
+    IDS_REMOVE_MP           "²¾°£¸Ë¸üÂI"
+    IDS_REMOVE_MP_COLUMN    "µ²ªG"
+END
+
+#endif    // Chinese (Taiwan) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)
+#ifdef _WIN32
+LANGUAGE 4, 1
+#endif
+#include "afs_shl_ext.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 57f9d520adb2659100b79466b7b303bbc7b904a8..4550009c91e7ed4bd9303f664c7c35f9f83df536 100644 (file)
@@ -1,12 +1,14 @@
-/*
- * Copyright 2000, International Business Machines Corporation and others.
- * All Rights Reserved.
- * 
- * This software has been released under the terms of the IBM Public
- * License.  For details, see the LICENSE file in the top-level source
- * directory or online at http://www.openafs.org/dl/license10.html
- */
-
+//{{NO_DEPENDENCIES}}
+//
+// Copyright 2000, International Business Machines Corporation and others.
+// All Rights Reserved.
+// 
+// This software has been released under the terms of the IBM Public
+// License.  For details, see the LICENSE file in the top-level source
+// directory or online at http://www.openafs.org/dl/license10.html
+//
+// Used by afs_shl_ext.rc
+//
 #define IDM_AUTHENTICATION              1
 #define IDM_ACL_SET                     2
 #define IDM_VOLUME_PROPERTIES           3
 #define IDM_SHOW_SERVER                 10
 #define IDM_SHOWCELL                    11
 #define IDM_SERVER_STATUS               12
-#define IDM_SUBMOUNTS_CREATE            13
+#define IDM_REMOVE_SYMLINK              13
 #define IDM_SUBMOUNTS_EDIT              14
 #define IDM_SUBMOUNTS                   15
 #define IDM_ACL_CLEAN                   16
 #define ID_GET_TOKENS                   17
 #define ID_DISCARD_TOKENS               18
+#define IDM_SUBMOUNTS_CREATE            19
 #define IDD_KLOG_DIALOG                 102
 #define IDR_MENU_FILE                   129
 #define IDD_VOLUME_INFO                 130
 #define IDS_SET_QUOTA_ERROR             32825
 #define ID_SUBMOUNTS_CREATE             32826
 #define ID_SUBMOUNTS_EDIT               32827
+#define ID_REMOVE_SYMLINK               32828
 #define IDS_CHECK_SERVERS_ERROR         59146
 #define IDS_ALL_SERVERS_RUNNING         59147
 #define IDS_CHECK_VOLUMES_OK            59150
 #define IDS_SHOW_FS_COLUMN              59186
 #define IDS_REMOVE_MP                   59187
 #define IDS_REMOVE_MP_COLUMN            59188
+#define IDS_REMOVE_SYMLINK_ITEM         59189
+#define IDS_REALLY_REMOVE_SYMLINK       59190
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        155
-#define _APS_NEXT_COMMAND_VALUE         32826
+#define _APS_NEXT_COMMAND_VALUE         32829
 #define _APS_NEXT_CONTROL_VALUE         1087
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
index 49dc7690aaae583d85379d0d9dd0b4b77a23f037..37e0f11027ecf5797caf33e752f943e93d0b6925 100644 (file)
@@ -12,6 +12,7 @@ extern "C" {
 #include <afs/stds.h>
 }
 
+#include <afxpriv.h>
 #include "stdafx.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -25,7 +26,7 @@ extern "C" {
 #include "server_status_dlg.h"
 #include "auth_dlg.h"
 #include "submounts_dlg.h"
-
+#include "gui2fs.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -36,7 +37,13 @@ static char THIS_FILE[] = __FILE__;
 
 ULONG nCMRefCount = 0; // IContextMenu ref count
 ULONG nSERefCount = 0; // IShellExtInit ref count
+ULONG nICRefCount=0;
+ULONG nTPRefCount=0;
+ULONG nXPRefCount=0;
 
+#define MAXSIZE 2048 /* most I'll get back from PIOCTL */
+#define PCCHAR(str)    ((char *)(const char *)str)
+static char space[MAXSIZE];
 
 static BOOL IsADir(const CString& strName)
 {
@@ -57,10 +64,15 @@ CShellExt::CShellExt()
 {
        EnableAutomation();
        nCMRefCount++;
+       HRESULT hr;
+       hr = SHGetMalloc(&m_pAlloc);
+       if (FAILED(hr))
+               m_pAlloc = NULL;
 }
 
 CShellExt::~CShellExt()
 {
+       if(m_pAlloc) m_pAlloc->Release();
        nCMRefCount--;
 }
 
@@ -100,9 +112,12 @@ BEGIN_INTERFACE_MAP(CShellExt, CCmdTarget)
        INTERFACE_PART(CShellExt, IID_IShellExt, Dispatch)
     INTERFACE_PART(CShellExt, IID_IContextMenu, MenuExt)
     INTERFACE_PART(CShellExt, IID_IShellExtInit, ShellInit)
+       INTERFACE_PART(CShellExt, IID_IShellIconOverlayIdentifier, IconExt)
+       INTERFACE_PART(CShellExt, IID_IQueryInfo , ToolTipExt)
+       INTERFACE_PART(CShellExt, IID_IPersistFile , PersistFileExt)
 END_INTERFACE_MAP()
 
-IMPLEMENT_OLECREATE(CShellExt, "AfsClientContextMenu", 0xdc515c27, 0x6cac, 0x11d1, 0xba, 0xe7, 0x0, 0xc0, 0x4f, 0xd1, 0x40, 0xd2)
+IMPLEMENT_OLECREATE(CShellExt, STR_EXT_TITLE, 0xdc515c27, 0x6cac, 0x11d1, 0xba, 0xe7, 0x0, 0xc0, 0x4f, 0xd1, 0x40, 0xd2)
 
 
 /////////////////////////////////////////////////////////////////////////////
@@ -155,10 +170,17 @@ STDMETHODIMP CShellExt::XMenuExt::QueryContextMenu(HMENU hMenu,UINT indexMenu,
                        continue;
                if (!lstrcmp (szItemText, pszAfsItemText)) {
                        DeleteMenu (hMenu, iItem, MF_BYPOSITION);
-                       break;
+                       continue;
+               }
+               if ((!lstrcmp(szItemText,"&Delete"))&&(pThis->m_bIsSymlink)) {  /*this is a symlink - don't present a delete menu!*/
+                       DeleteMenu (hMenu, iItem, MF_BYPOSITION);
+                       continue;
+               }
+               if ((!lstrcmp(szItemText,"Cu&t"))&&(pThis->m_bIsSymlink)) {             /*same for cut*/
+                       DeleteMenu (hMenu, iItem, MF_BYPOSITION);
+                       continue;
                }
        }
-
        int indexShellMenu = 0;
 
        // Create the AFS submenu using the allowed ID's.
@@ -196,6 +218,8 @@ STDMETHODIMP CShellExt::XMenuExt::QueryContextMenu(HMENU hMenu,UINT indexMenu,
        ::InsertMenu(hAfsMenu, indexAfsMenu++, MF_STRING | MF_BYPOSITION, idCmdFirst + IDM_SHOW_SERVER, GetMessageString(IDS_SHOW_FILE_SERVERS_ITEM));
        ::InsertMenu(hAfsMenu, indexAfsMenu++, MF_STRING | MF_BYPOSITION, idCmdFirst + IDM_SHOWCELL, GetMessageString(IDS_SHOW_CELL_ITEM));
        ::InsertMenu(hAfsMenu, indexAfsMenu++, MF_STRING | MF_BYPOSITION, idCmdFirst + IDM_SERVER_STATUS, GetMessageString(IDS_SHOW_SERVER_STATUS_ITEM));
+       if (pThis->m_bIsSymlink)
+               ::InsertMenu(hAfsMenu, indexAfsMenu++, MF_STRING | MF_BYPOSITION, idCmdFirst + IDM_REMOVE_SYMLINK, GetMessageString(IDS_REMOVE_SYMLINK_ITEM));
        
        // The Submounts menu has been removed because the AFS tray icon
        // and control panel now support mapping drives directly to an AFS
@@ -307,7 +331,14 @@ STDMETHODIMP CShellExt::XMenuExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
                                                                                dlg.DoModal();
                                                                        }
                                                                        break;
-
+               case IDM_REMOVE_SYMLINK:        {
+                                                                               if (files.GetSize()>1)
+                                                                                       break;
+                                                                               int nChoice = ShowMessageBox(IDS_REALLY_REMOVE_SYMLINK, MB_ICONQUESTION | MB_YESNO, IDS_REALLY_REMOVE_SYMLINK);
+                                                                               if (nChoice == IDYES)
+                                                                                       RemoveSymlink(files.GetAt(0));
+                                                                       }
+                                                                       break;
                default:
                        ASSERT(FALSE);
                        Release();
@@ -372,6 +403,9 @@ STDMETHODIMP CShellExt::XMenuExt::GetCommandString(UINT idCmd, UINT uType,
                
                case IDM_SUBMOUNTS_EDIT:        nCmdStrID = ID_SUBMOUNTS_EDIT;
                                                                        break;
+
+               case IDM_REMOVE_SYMLINK:        nCmdStrID= ID_REMOVE_SYMLINK;
+                                                                       break;
                
                default:
                        ASSERT(FALSE);
@@ -454,6 +488,8 @@ STDMETHODIMP CShellExt::XShellInit::Initialize(LPCITEMIDLIST pidlFolder, IDataOb
                        if (!IsPathInAfs(strFileName)) {
                                pThis->m_astrFileNames.RemoveAll();
                                break;
+                       } else {
+                               pThis->m_bIsSymlink=IsSymlink(strFileName);
                        }
 
                        if (IsADir(strFileName))
@@ -474,3 +510,160 @@ STDMETHODIMP CShellExt::XShellInit::Initialize(LPCITEMIDLIST pidlFolder, IDataOb
     return hres;
 }
 
+STDMETHODIMP CShellExt::XIconExt::QueryInterface(REFIID riid, void** ppv)
+{
+    METHOD_PROLOGUE(CShellExt, IconExt);
+    return pThis->ExternalQueryInterface(&riid, ppv);
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XIconExt::AddRef(void)
+{
+       return ++nICRefCount;
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XIconExt::Release(void)
+{
+       if (nICRefCount > 0)
+               nICRefCount--;
+
+       return nICRefCount;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// IIconHandler Functions
+/////////////////////////////////////////////////////////////////////////////
+
+STDMETHODIMP CShellExt::XIconExt::GetOverlayInfo(LPWSTR pwszIconFile
+       ,int cchMax,int* pIndex,DWORD* pdwFlags)
+{
+       if(IsBadWritePtr(pIndex, sizeof(int)))
+               return E_INVALIDARG;
+       if(IsBadWritePtr(pdwFlags, sizeof(DWORD)))
+               return E_INVALIDARG;
+
+       HMODULE hModule=GetModuleHandle("shell32.dll");
+       TCHAR szModule[MAX_PATH];
+       DWORD z=GetModuleFileName(hModule,szModule,sizeof(szModule));
+       MultiByteToWideChar( CP_ACP,0,szModule,-1,pwszIconFile,cchMax); 
+       *pIndex = 30;
+       *pdwFlags = ISIOI_ICONFILE | ISIOI_ICONINDEX;
+       return S_OK;
+}
+
+STDMETHODIMP CShellExt::XIconExt::GetPriority(int* pPriority)
+{
+       if(IsBadWritePtr(pPriority, sizeof(int)))
+          return E_INVALIDARG;
+       *pPriority = 0;
+       return S_OK;
+}
+
+STDMETHODIMP CShellExt::XIconExt::IsMemberOf(LPCWSTR pwszPath,DWORD dwAttrib)
+{
+       TCHAR szPath[MAX_PATH];
+       WideCharToMultiByte( CP_ACP,0,pwszPath,-1,szPath,MAX_PATH,NULL,NULL);
+       if (IsSymlink(szPath))
+               return S_OK;
+       return S_FALSE;
+}
+
+/*          TOOL TIP INFO IMPLIMENTION   */
+
+STDMETHODIMP CShellExt::XToolTipExt::QueryInterface(REFIID riid, void** ppv)
+{
+    METHOD_PROLOGUE(CShellExt, ToolTipExt);
+    return pThis->ExternalQueryInterface(&riid, ppv);
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XToolTipExt::AddRef(void)
+{
+       return ++nTPRefCount;
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XToolTipExt::Release(void)
+{
+       if (nTPRefCount> 0)
+               nTPRefCount--;
+
+       return nTPRefCount;
+}
+
+STDMETHODIMP CShellExt::XToolTipExt::GetInfoTip(DWORD dwFlags, LPWSTR *ppwszTip)
+{
+    METHOD_PROLOGUE(CShellExt, ToolTipExt);
+
+       if (!IsSymlink(pThis->m_szFile))
+       {
+               ppwszTip=NULL;
+               return S_OK;
+       }
+       USES_CONVERSION;
+       // dwFlags is currently unused.
+       *ppwszTip = (WCHAR*) (pThis->m_pAlloc)->Alloc((1+lstrlen(pThis->m_szFile))*sizeof(WCHAR));
+       if (*ppwszTip)
+       {
+               wcscpy(*ppwszTip, (WCHAR*)T2OLE(pThis->m_szFile));
+       }
+
+       return S_OK;
+}
+STDMETHODIMP CShellExt::XToolTipExt::GetInfoFlags(LPDWORD pdwFlags)
+{
+       return S_OK;
+}
+
+//////////                          IPersistFile
+///////                            PersistFileExt
+
+STDMETHODIMP CShellExt::XPersistFileExt::QueryInterface(REFIID riid, void** ppv)
+{
+    METHOD_PROLOGUE(CShellExt, PersistFileExt);
+    return pThis->ExternalQueryInterface(&riid, ppv);
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XPersistFileExt::AddRef(void)
+{
+       return ++nXPRefCount;
+}
+
+STDMETHODIMP_(ULONG) CShellExt::XPersistFileExt::Release(void)
+{
+       if (nXPRefCount> 0)
+               nXPRefCount--;
+
+       return nXPRefCount;
+}
+
+STDMETHODIMP   CShellExt::XPersistFileExt::Load(LPCOLESTR wszFile, DWORD dwMode)
+{
+    METHOD_PROLOGUE(CShellExt, PersistFileExt);
+       USES_CONVERSION;
+       _tcscpy(pThis->m_szFile, OLE2T((WCHAR*)wszFile)); 
+       return S_OK;    
+}
+
+STDMETHODIMP CShellExt::XPersistFileExt::GetClassID(LPCLSID)
+{ 
+       return E_NOTIMPL;       
+}
+
+STDMETHODIMP CShellExt::XPersistFileExt::IsDirty(VOID)
+{ 
+       return E_NOTIMPL; 
+}
+
+STDMETHODIMP CShellExt::XPersistFileExt::Save(LPCOLESTR, BOOL)
+{ 
+       return E_NOTIMPL; 
+}
+
+STDMETHODIMP CShellExt::XPersistFileExt::SaveCompleted(LPCOLESTR)
+{ 
+       return E_NOTIMPL; 
+}
+
+STDMETHODIMP CShellExt::XPersistFileExt::GetCurFile(LPOLESTR FAR*)
+{ 
+       return E_NOTIMPL; 
+}
index 02a2ffd71b95561c7f511e4b3c97df641eeee0b8..de826a2eba160e3677b88b8ac4773a0d8752fe14 100644 (file)
 
 #include <shlobj.h>
 
-
 extern ULONG nCMRefCount;      // IContextMenu ref count
 extern ULONG nSERefCount;      // IShellExtInit ref count
+extern ULONG nICRefCount;      // IContextMenu ref count
+extern ULONG nTPRefCount;      // IQueryInfo ref count
+extern ULONG nXPRefCount;      // IPersistFile ref count
 
+#define STR_EXT_TITLE   TEXT("AfsClientContextMenu")
+#define STR_REG_PATH    TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers")
 
 /////////////////////////////////////////////////////////////////////////////
 // CShellExt command target
@@ -31,10 +35,13 @@ class CShellExt : public CCmdTarget
        DECLARE_DYNCREATE(CShellExt)
 
        BOOL m_bDirSelected;
+       BOOL m_bIsSymlink;      // is symbolic link!
+       TCHAR m_szFile[MAX_PATH];
 
     CStringArray m_astrFileNames;
 
        CShellExt();           // protected constructor used by dynamic creation
+       LPMALLOC m_pAlloc;
 
 // Attributes
 public:
@@ -81,6 +88,26 @@ protected:
         STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder,LPDATAOBJECT lpdobj, HKEY hkeyProgID);
     END_INTERFACE_PART(ShellInit)
 
+    BEGIN_INTERFACE_PART(IconExt, IShellIconOverlayIdentifier)
+        STDMETHOD(GetOverlayInfo)(LPWSTR pwszIconFile,int cchMax,int* pIndex,DWORD* pdwFlags);
+        STDMETHOD(GetPriority)(int* pPriority);
+        STDMETHOD(IsMemberOf)(LPCWSTR pwszPath,DWORD dwAttrib);
+    END_INTERFACE_PART(IconExt)
+
+       BEGIN_INTERFACE_PART(ToolTipExt, IQueryInfo)
+               STDMETHOD(GetInfoTip)(DWORD dwFlags, LPWSTR *ppwszTip);
+               STDMETHOD(GetInfoFlags)(LPDWORD pdwFlags);
+    END_INTERFACE_PART(ToolTipExt)
+
+       BEGIN_INTERFACE_PART(PersistFileExt, IPersistFile)
+               STDMETHOD(Load)(LPCOLESTR wszFile, DWORD dwMode);
+               STDMETHOD(GetClassID)(LPCLSID);
+               STDMETHOD(IsDirty)(VOID);
+               STDMETHOD(Save)(LPCOLESTR, BOOL);
+               STDMETHOD(SaveCompleted)(LPCOLESTR);
+               STDMETHOD(GetCurFile)(LPOLESTR FAR*);
+    END_INTERFACE_PART(PersistFileExt)
+
        DECLARE_INTERFACE_MAP()
 };
 
index 7c8894c3ff3bf66c14ac32a88c7d237489263418..6b176a86be07ab9844defc60a3c398bb09e613cc 100644 (file)
@@ -40,7 +40,7 @@ EVENTRESFILE = $(LANGNAME)\event.res
 DLLOBJS = $(DLLRESFILE)
 
 $(DLLFILE): $(DLLOBJS)
-       $(DLLCONLINK)
+       $(DLLRESLINK)
        $(DLLPREP)
 
 ############################################################################
index 5577a96b49f6b3cccd3322bd4d2dbb69340d7bb0..498daa2204a805f16c51a77c6258a8864f08c666 100644 (file)
@@ -20,6 +20,15 @@ AFSBUILDCOMMENTS=Build:*DatE* *TimE* CellServDB:$(CELLSERVDB_INSTALL)
  
 ############################################################################
 
+#CHECK which OS we are using to avoid using the wrong options
+!IF    (([$(DESTDIR)\bin\util_cr.exe _ xp w2])==1) 
+XCOPY= xcopy /s/e/y
+!ELSE
+XCOPY= xcopy /s/e
+!ENDIF
+
+#check which version of the complier we are using
+
 prep: AFS_component_version_number.txt
        $(DESTDIR)\bin\util_cr.exe } "$(AFSPRODUCT_VERSION)" ".\lang\en_US\value.txt" ".\lang\en_US\value.shl"
        $(DESTDIR)\bin\util_cr.exe } "$(AFSPRODUCT_VERSION)" "default.txt" "default.rge"
@@ -62,8 +71,7 @@ build:
        $(DEL) /q $(DESTDIR)\Wininstall\PackageWeb\*.*
        $(ISWEB)\Pftwwiz.exe $(AFSROOT)\src\winnt\install\InstallShield5\PackageWeb.pfw -s -a 
 !ENDIF
-       xcopy /s/e/y "Media\OpenAFS\Disk Images\disk1\*.*" $(DESTDIR)\WinInstall
+       $(XCOPY) Media\OpenAFS\DiskIm~1\disk1\*.* $(DESTDIR)\WinInstall
        copy AFS_component_version_number.txt $(DESTDIR)\WinInstall\Version.txt
        $(DEL) /q "Media\OpenAFS\Disk Images\disk1\*.*"
-
 install: prep build
index edc948d309eed05887dd5245fd8ccaec2d06005d..2ea60216657ce92ec82a6e7157f0bc23603b9eb3 100644 (file)
@@ -87,11 +87,8 @@ extern void       afsHashRelease(tid_t key);
 extern caddr_t kmem_alloc();
 #include <sys/kthread_iface.h> /* for kt_cred() */
 
-#endif /* _OSI_MACHDEP_H_ */
-
-
-
-
-
-
+/* Expected to be available as a patch from HP */
+/* See section D of the top level README for details */
+#include <vfs_vm.h>
 
+#endif /* _OSI_MACHDEP_H_ */
index 501693ed6d6c3f7ed95ae05ea6104250f761990d..a39858b9f0ec90541b916e19bc02334e186b1e65 100644 (file)
@@ -12,7 +12,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/HPUX/osi_vnodeops.c,v 1.1.1.6 2002/05/10 23:43:53 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/HPUX/osi_vnodeops.c,v 1.1.1.7 2002/12/11 02:36:12 hartmans Exp $");
 
 #include "../afs/sysincludes.h"        /* Standard vendor system headers */
 #include "../afs/afsincludes.h"        /* Afs-based standard headers */
@@ -179,10 +179,6 @@ afs_lockf( vp, flag, len, cred, fp, LB, UB )
 #include "../h/tuneable.h"
 #include "../h/buf.h"
 #include "../netinet/in.h"
-#include "../rpc/types.h"
-#include "../rpc/auth.h"
-#include "../rpc/clnt.h"
-#include "../rpc/xdr.h"
 
 /* a freelist of one */
 struct buf *afs_bread_freebp = 0;
index a1f6eb856a16c02bf55fc530e9771a30c3664775..d6a8fc5ae93668e882f6d3b36f0efe5ffd36277f 100644 (file)
@@ -16,7 +16,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_groups.c,v 1.1.1.9 2002/05/10 23:44:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_groups.c,v 1.1.1.10 2002/12/11 02:36:15 hartmans Exp $");
 
 #include "../afs/sysincludes.h"
 #include "../afs/afsincludes.h"
@@ -42,7 +42,7 @@ int set_pag_in_parent(int pag, int g0, int g1)
     gp = current->p_pptr->groups;
 
 
-    if (afs_get_pag_from_groups(gp[0], gp[1]) == NOPAG) {
+    if ((ngroups < 2) || (afs_get_pag_from_groups(gp[0], gp[1]) == NOPAG)) {
        /* We will have to shift grouplist to make room for pag */
        if (ngroups + 2 > NGROUPS) {
            return EINVAL;
index 615fb453c9466f4baf2030fe4e02b9567361b3b3..0d119216ca70201dc6374df8bd2f281aee8dd4a2 100644 (file)
@@ -27,6 +27,8 @@ extern cred_t *crdup(cred_t *cr);
 extern cred_t *crref(void);
 extern void crset(cred_t *cr);
 
+/* osi_file.c */
+extern afs_rwlock_t afs_xosi;
 
 /* osi_misc.c */
 extern int osi_lookupname(char *aname, uio_seg_t seg, int followlink,
index ee0588b91c53bac5261be8227a7ec47051f73885..90a572c1719bd8da8c9aa1ed253af43af65cbb95 100644 (file)
@@ -44,6 +44,7 @@ typedef struct vnode vnode_t;
 #define VCHR S_IFCHR
 #define VLNK S_IFLNK
 #define VSOCK S_IFSOCK
+#define VFIFO S_IFIFO
 
 /* vcexcl - used only by afs_create */
 enum vcexcl { EXCL, NONEXCL } ;
index afe36c49a45b6906528fcd5e0f91e348b63cdb0b..13295789f62c3cbd5fdec605c023c94d6351bc14 100644 (file)
@@ -10,7 +10,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_file.c,v 1.1.1.8 2002/09/26 18:58:18 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_file.c,v 1.1.1.9 2002/12/11 02:36:19 hartmans Exp $");
 
 #include "../afs/sysincludes.h"        /* Standard vendor system headers */
 #include "../afs/afsincludes.h"        /* Afs-based standard headers */
@@ -149,8 +149,11 @@ void *osi_VxfsOpen(ainode)
 }
 #endif /* AFS_HAVE_VXFS */
 
-void *osi_UfsOpen(ainode)
-    afs_int32 ainode;
+#if defined(AFS_SUN57_64BIT_ENV)
+void *osi_UfsOpen(ino_t ainode)
+#else
+void *osi_UfsOpen(afs_int32 ainode)
+#endif
 {
     struct inode *ip;
     register struct osi_file *afile = NULL;
index b38c01571fa1158834849e9967c62b14b3daabe1..d06ca82848aad4dab7ee45c537abbba0b70c8b31 100644 (file)
@@ -10,7 +10,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.1.1.10 2002/08/02 04:28:59 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.1.1.11 2002/12/11 02:36:21 hartmans Exp $");
 
 #if    defined(AFS_SUN_ENV) || defined(AFS_SUN5_ENV)
 /*
@@ -1935,12 +1935,17 @@ void afs_inactive(struct vcache *avc, struct AFS_UCRED *acred)
         mutex_exit(&vp->v_lock);
         return;
     }  
-    mutex_exit(&vp->v_lock);    
+    mutex_exit(&vp->v_lock);
+
     /*
-     * Solaris calls VOP_OPEN on exec, but isn't very diligent about calling
-     * VOP_CLOSE when executable exits.
+     * Solaris calls VOP_OPEN on exec, but doesn't call VOP_CLOSE when
+     * the executable exits.  So we clean up the open count here.
+     *
+     * Only do this for mvstat 0 vnodes: when using fakestat, we can't
+     * lose the open count for volume roots (mvstat 2), even though they
+     * will get VOP_INACTIVE'd when released by afs_PutFakeStat().
      */
-    if (avc->opens > 0 && !(avc->states & CCore))
+    if (avc->opens > 0 && avc->mvstat == 0 && !(avc->states & CCore))
        avc->opens = avc->execsOrWriters = 0;
 
     afs_InactiveVCache(avc, acred);
index 42db954f3bd33d208f6245111d66ce14de218590..43a0182b07194028713b8a629094425485db0e0c 100644 (file)
@@ -14,7 +14,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/UKERNEL/afs_usrops.c,v 1.1.1.8 2002/05/10 23:44:15 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/UKERNEL/afs_usrops.c,v 1.1.1.9 2002/12/11 02:36:21 hartmans Exp $");
 
 
 #ifdef UKERNEL
@@ -2219,7 +2219,7 @@ int uafs_LookupName(
        /*
         * terminate the current component and skip over slashes
         */
-       nextPathP = strchr(pathP, '/');
+       nextPathP = afs_strchr(pathP, '/');
        if (nextPathP != NULL) {
            while (*nextPathP == '/') {
                *(nextPathP++) = '\0';
index 6622455c4378a3a03091c35e5fcca60391ed566f..9bd9c7b5d630377cd5a329ff5f77b3d705d72355 100644 (file)
@@ -16,7 +16,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.1.1.8 2002/08/02 04:29:01 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.1.1.9 2002/12/11 02:36:23 hartmans Exp $");
 
 #include "../afs/sysincludes.h"        /* Standard vendor system headers */
 #include "../afs/afsincludes.h"        /* Afs-based standard headers */
@@ -106,14 +106,18 @@ afs_create(OSI_VC_ARG(adp), aname, attrs, aexcl, amode, avcp, acred)
        code = EINVAL;
        goto done;
     }
-#if    defined(AFS_SUN5_ENV)
-    if ((attrs->va_type == VBLK) || (attrs->va_type == VCHR)) {
-#else
-    if ((attrs->va_type == VBLK) || (attrs->va_type == VCHR) || (attrs->va_type == VSOCK)) {
+    switch (attrs->va_type) {
+    case VBLK:
+    case VCHR:
+#if    !defined(AFS_SUN5_ENV)
+    case VSOCK:
 #endif
-       /* We don't support special devices */
+    case VFIFO:
+       /* We don't support special devices or FIFOs */
        code = EINVAL;          
        goto done;
+    default:
+       ;
     }
     code = afs_EvalFakeStat(&adp, &fakestate, &treq);
     if (code) goto done;
index e42714b2cb8de24d9d4657e4e0a01f7a9b5b8a7e..107b3a8bd3810adee82b4e1c02a0e19a539ffadf 100644 (file)
@@ -125,6 +125,23 @@ afs_IsDynroot(avc)
     return afs_IsDynrootFid(&avc->fid);
 }
 
+/*
+ * Given the current page and chunk pointers in a directory, adjust them
+ * appropriately so that the given file name can be appended.  Used for
+ * computing the size of a directory.
+ */
+static void afs_dynroot_computeDirEnt(char *name, int *curPageP, int *curChunkP)
+{
+    int esize;
+
+    esize = afs_dir_NameBlobs(name);
+    if (*curChunkP + esize > EPP) {
+       *curPageP += 1;
+       *curChunkP = 1;
+    }
+    *curChunkP += esize;
+}
+
 /*
  * Add directory entry by given name to a directory.  Assumes the
  * caller has allocated the directory to be large enough to hold
@@ -207,7 +224,7 @@ afs_RefreshDynroot()
     int cellidx, maxcellidx, i;
     struct cell *c;
     int curChunk, curPage;
-    int dirSize, sizeOfCurEntry;
+    int dirSize, sizeOfCurEntry, dotLen;
     char *newDir, *dotCell;
     struct DirHeader *dirHeader;
     struct PageHeader *pageHeader;
@@ -229,6 +246,9 @@ afs_RefreshDynroot()
     curChunk = 13;
     curPage = 0;
 
+    /* Reserve space for "." and ".." */
+    curChunk += 2;
+
     for (cellidx = 0; cellidx < maxcellidx; cellidx++) {
        c = afs_GetCellByIndex(cellidx, READ_LOCK, 0 /* don't refresh */);
        if (!c) continue;
@@ -240,7 +260,8 @@ afs_RefreshDynroot()
        }
        curChunk += sizeOfCurEntry;
 
-       dotCell = afs_osi_Alloc(strlen(c->cellName) + 2);
+       dotLen = strlen(c->cellName) + 2;
+       dotCell = afs_osi_Alloc(dotLen);
        strcpy(dotCell, ".");
        strcat(dotCell, c->cellName);
        sizeOfCurEntry = afs_dir_NameBlobs(dotCell);
@@ -250,6 +271,7 @@ afs_RefreshDynroot()
        }
        curChunk += sizeOfCurEntry;
 
+       afs_osi_Free(dotCell, dotLen);
        afs_PutCell(c, READ_LOCK);
     }
 
@@ -294,14 +316,12 @@ afs_RefreshDynroot()
     afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, "..", 1);
     linkCount += 2;
 
-    /* Reserve space for "." and ".." */
-    curChunk += 2;
-
     for (cellidx = 0; cellidx < maxcellidx; cellidx++) {
        c = afs_GetCellByIndex(cellidx, READ_LOCK, 0 /* don't refresh */);
        if (!c) continue;
 
-       dotCell = afs_osi_Alloc(strlen(c->cellName) + 2);
+       dotLen = strlen(c->cellName) + 2;
+       dotCell = afs_osi_Alloc(dotLen);
        strcpy(dotCell, ".");
        strcat(dotCell, c->cellName);
        afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk,
@@ -310,6 +330,8 @@ afs_RefreshDynroot()
                              dotCell, VNUM_FROM_CIDX_RW(cellidx, 1));
 
        if (!(c->states & CAlias)) linkCount += 2;
+
+       afs_osi_Free(dotCell, dotLen);
        afs_PutCell(c, READ_LOCK);
     }
 
index d12bdbeff70e4d4c8a6d7ef268d46c710b50a24a..e5eebf188c9b6084eeac39781f3cac02958c7d34 100644 (file)
@@ -16,7 +16,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_init.c,v 1.1.1.8 2002/09/26 18:57:51 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_init.c,v 1.1.1.9 2002/12/11 02:35:59 hartmans Exp $");
 
 #include "../afs/stds.h"
 #include "../afs/sysincludes.h"        /* Standard vendor system headers */
@@ -39,6 +39,7 @@ extern afs_rwlock_t afs_xaxs;
 extern afs_rwlock_t afs_xvolume;
 extern afs_rwlock_t afs_xuser;
 extern afs_rwlock_t afs_xserver;
+extern afs_rwlock_t afs_xsrvAddr;
 #ifndef AFS_AIX41_ENV
 extern afs_lock_t osi_fsplock;
 #endif
@@ -89,6 +90,7 @@ extern afs_int32 usedihint;
 
 /* afs_server.c */
 extern afs_int32 afs_setTime;
+extern afs_rwlock_t afs_xsrvAddr;
 
 /* Imported functions. */
 extern struct rx_securityClass *rxnull_NewServerSecurityObject();
@@ -521,6 +523,8 @@ afs_ResourceInit(preallocs)
     RWLOCK_INIT(&afs_xvolume, "afs_xvolume");
     RWLOCK_INIT(&afs_xcell, "afs_xcell");
     RWLOCK_INIT(&afs_xserver, "afs_xserver");
+    RWLOCK_INIT(&afs_xsrvAddr, "afs_xsrvAddr");
+    RWLOCK_INIT(&afs_icl_lock, "afs_icl_lock");
     RWLOCK_INIT(&afs_xinterface, "afs_xinterface");
     LOCK_INIT(&afs_puttofileLock, "afs_puttofileLock");
 #ifndef        AFS_AIX32_ENV
index a9141f300865899521757880039ef6a101bfc6cf..c0c5c3706d75d521e4329078d07033954b7b2427 100644 (file)
@@ -10,7 +10,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_nfsdisp.c,v 1.1.1.4 2002/08/02 04:28:40 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_nfsdisp.c,v 1.1.1.5 2002/12/11 02:36:00 hartmans Exp $");
 
 /* Ugly Ugly Ugly  but precludes conflicting XDR macros; We want kernel xdr */
 #define __XDR_INCLUDE__
@@ -37,176 +37,181 @@ RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_nfsdisp.c,v 1.1.1.4 2002/08/02
 
 static int xlatorinit_v2_done=0;
 static int xlatorinit_v3_done=0;
-
 extern int afs_nobody;
 extern int afs_NFSRootOnly;
 
-/* It's bigger than this, but we don't care about anything else */
 struct rfs_disp_tbl {
-       void  (*dis_proc)();    
+    void (*dis_proc)();
+    xdrproc_t dis_xdrargs;
+    xdrproc_t dis_fastxdrargs;
+    int       dis_argsz;           
+    xdrproc_t dis_xdrres;          
+    xdrproc_t dis_fastxdrres;      
+    int       dis_ressz;           
+    void      (*dis_resfree)();    
+    int       dis_flags;
+    fhandle_t (*dis_getfh)();      
 };
 
 struct afs_nfs_disp_tbl {
     void (*afs_proc)();
     void (*orig_proc)();
 };
-
 struct afs_nfs2_resp {
     enum nfsstat status;
 };
 
 #ifndef ACL2_NPROC
-#define ACL2_NPROC     5
+#define ACL2_NPROC      5
 #endif
-
 struct afs_nfs_disp_tbl afs_rfs_disp_tbl[RFS_NPROC];
 struct afs_nfs_disp_tbl afs_acl_disp_tbl[ACL2_NPROC];
 
-static int 
+static int
 is_afs_fh(fhandle_t *fhp) {
     if ((fhp->fh_fsid.val[0] == AFS_VFSMAGIC) &&
-       (fhp->fh_fsid.val[1] == AFS_VFSFSID)) 
+       (fhp->fh_fsid.val[1] == AFS_VFSFSID))
        return 1;
     return 0;
 }
 
-afs_int32 
+afs_int32
 nfs2_to_afs_call(int which, caddr_t *args, fhandle_t **fhpp, fhandle_t **fh2pp)
 {
     struct vnode *vp;
     fhandle_t *fhp1=0;
     fhandle_t *fhp2=0;
     int errorcode;
-
+    
     *fh2pp = (fhandle_t *)0;
     switch (which) {
-       case RFS_GETATTR:
-        case RFS_READLINK:
-        case RFS_STATFS:
-           fhp1 = (fhandle_t *)args;
-           break;
-       case RFS_SETATTR: 
-       {
-           struct nfssaargs *sargs = (struct nfssaargs *)args; 
-           fhp1 = (fhandle_t *)&sargs->saa_fh;
-           break;
-       } 
-        case RFS_LOOKUP: 
-       {
-           struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
-           fhp1 = (fhandle_t *)&sargs->da_fhandle;
-           break;
-       } 
-       case RFS_READ:
-       {
-           struct nfsreadargs *sargs = (struct nfsreadargs *)args;
-           fhp1 = (fhandle_t *)&sargs->ra_fhandle;
-           break;
-       } 
-        case RFS_WRITE: 
-       {
-           struct nfswriteargs *sargs = (struct nfswriteargs *)args;
-           fhp1 = (fhandle_t *)&sargs->wa_fhandle;
-           break;
-       } 
-        case RFS_CREATE: 
-       {
-           struct nfscreatargs *sargs = (struct nfscreatargs *)args;
-           fhp1 = (fhandle_t *)&sargs->ca_da.da_fhandle;
-           break;
-       } 
-        case RFS_REMOVE: 
-       {
-           struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
-           fhp1 = (fhandle_t *)&sargs->da_fhandle;
-           break;
-       }
-        case RFS_RENAME: 
-       {
-           struct nfsrnmargs *sargs = (struct nfsrnmargs *)args;
-           fhp1 = (fhandle_t *)&sargs->rna_from.da_fhandle;
-           fhp2 = (fhandle_t *)&sargs->rna_to.da_fhandle;
-           break;
-       } 
-        case RFS_LINK: 
-       {
-           struct nfslinkargs *sargs = (struct nfslinkargs *)args;
-           fhp1 = (fhandle_t *)&sargs->la_from;
-           fhp2 = (fhandle_t *)&sargs->la_to.da_fhandle;
-           break;
-       } 
-        case RFS_SYMLINK: 
-       {
-           struct nfsslargs *sargs = (struct nfsslargs *)args;
-           fhp1 = (fhandle_t *)&sargs->sla_from.da_fhandle;
-           break;
-       } 
-        case RFS_MKDIR: 
-       {
-           struct nfscreatargs *sargs = (struct nfscreatargs *)args;
-           fhp1 = (fhandle_t *)&sargs->ca_da.da_fhandle;
-           break;
-       } 
-        case RFS_RMDIR: 
-       {
-           struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
-           fhp1 = (fhandle_t *)&sargs->da_fhandle;
-           break;
-       } 
-        case RFS_READDIR: 
-       {
-           struct nfsrddirargs *sargs = (struct nfsrddirargs *)args;
-           fhp1 = (fhandle_t *)&sargs->rda_fh;
-           break;
-       } 
-       default:
-           return NULL;
+    case RFS_GETATTR:
+    case RFS_READLINK:
+    case RFS_STATFS:
+       fhp1 = (fhandle_t *)args;
+       break;
+    case RFS_SETATTR:
+    {
+       struct nfssaargs *sargs = (struct nfssaargs *)args;
+       fhp1 = (fhandle_t *)&sargs->saa_fh;
+       break;
     }
-
+    case RFS_LOOKUP:
+    {
+       struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
+       fhp1 = sargs->da_fhandle;
+       break;
+    }
+    case RFS_READ:
+    {
+       struct nfsreadargs *sargs = (struct nfsreadargs *)args;
+       fhp1 = (fhandle_t *)&sargs->ra_fhandle;
+       break;
+    }
+    case RFS_WRITE:
+    {
+       struct nfswriteargs *sargs = (struct nfswriteargs *)args;
+       fhp1 = (fhandle_t *)&sargs->wa_fhandle;
+       break;
+    }
+    case RFS_CREATE:
+    {
+       struct nfscreatargs *sargs = (struct nfscreatargs *)args;
+       fhp1 = sargs->ca_da.da_fhandle;
+       break;
+    }
+    case RFS_REMOVE:
+    {
+       struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
+       fhp1 = sargs->da_fhandle;
+       break;
+    }
+    case RFS_RENAME:
+    {
+       struct nfsrnmargs *sargs = (struct nfsrnmargs *)args;
+       fhp1 = sargs->rna_from.da_fhandle;
+       fhp2 = sargs->rna_to.da_fhandle;
+       break;
+    }
+    case RFS_LINK:
+    {
+       struct nfslinkargs *sargs = (struct nfslinkargs *)args;
+       fhp1 = sargs->la_from;
+       fhp2 = sargs->la_to.da_fhandle;
+       break;
+    }
+    case RFS_SYMLINK:
+    {
+       struct nfsslargs *sargs = (struct nfsslargs *)args;
+       fhp1 = sargs->sla_from.da_fhandle;
+       break;
+    }
+    case RFS_MKDIR:
+    {
+       struct nfscreatargs *sargs = (struct nfscreatargs *)args;
+       fhp1 = sargs->ca_da.da_fhandle;
+       break;
+    }
+    case RFS_RMDIR:
+    {
+       struct nfsdiropargs *sargs = (struct nfsdiropargs *)args;
+       fhp1 = sargs->da_fhandle;
+       break;
+    }
+    case RFS_READDIR:
+    {
+       struct nfsrddirargs *sargs = (struct nfsrddirargs *)args;
+       fhp1 = (fhandle_t *)&sargs->rda_fh;
+       break;
+    }
+    default:
+       return NULL;
+    }
+    
     /* Ok if arg 1 is in AFS or if 2 args and arg 2 is in AFS */
     if (is_afs_fh(fhp1)) {
        *fhpp = fhp1;
-       if (fhp2) 
+       if (fhp2)
            *fh2pp = fhp2;
-       return 1;           
+       return 1;
     }
-    if (is_afs_fh(fhp2)) {
+    if (fhp2 && is_afs_fh(fhp2)) {
        *fhpp = fhp1;
        *fh2pp = fhp2;
-       return 1;           
+       return 1;
     }
     return NULL;
 }
 
-afs_int32 
+afs_int32
 acl2_to_afs_call(int which, caddr_t *args, fhandle_t **fhpp)
 {
     fhandle_t *fhp;
-
+    
     switch(which) {
     case ACLPROC2_NULL:
     {
        return NULL;
     }
-    case ACLPROC2_GETACL: 
+    case ACLPROC2_GETACL:
     {
        struct GETACL2args *sargs = (struct GETACL2args *) args;
        fhp = &sargs->fh;
        break;
     }
-    case ACLPROC2_SETACL: 
+    case ACLPROC2_SETACL:
     {
        struct SETACL2args *sargs = (struct SETACL2args *) args;
        fhp = &sargs->fh;
        break;
     }
-    case ACLPROC2_GETATTR: 
+    case ACLPROC2_GETATTR:
     {
        struct GETATTR2args *sargs = (struct GETATTR2args *) args;
        fhp = &sargs->fh;
        break;
     }
-    case ACLPROC2_ACCESS: 
+    case ACLPROC2_ACCESS:
     {
        struct ACCESS2args *sargs = (struct ACCESS2args *) args;
        fhp = &sargs->fh;
@@ -215,19 +220,19 @@ acl2_to_afs_call(int which, caddr_t *args, fhandle_t **fhpp)
     default:
        return NULL;
     }
-
+    
     if (is_afs_fh(fhp)) {
        *fhpp = fhp;
        return 1;
     }
-
+    
     return NULL;
 }
 
 int
-afs_nfs2_dispatcher(int type, afs_int32 which, char *argp, 
-                   struct exportinfo **expp, 
-                   struct svc_req *rp, struct AFS_UCRED *crp)
+afs_nfs2_dispatcher(int type, afs_int32 which, char *argp,
+                    struct exportinfo **expp,
+                    struct svc_req *rp, struct AFS_UCRED *crp)
 {
     afs_int32 call = 0;
     afs_int32 code = 0;
@@ -235,33 +240,38 @@ afs_nfs2_dispatcher(int type, afs_int32 which, char *argp,
     struct sockaddr *sa;
     fhandle_t *fh = (fhandle_t *)argp;
     fhandle_t *fh2 = (fhandle_t *)0;
-
+    
     if (!xlatorinit_v2_done)
        return 2;
-
+    
     sa = (struct sockaddr *)svc_getrpccaller(rp->rq_xprt)->buf;
-    client = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
-
+    if (sa->sa_family == AF_INET)
+       client = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
+    
     AFS_GLOCK();
     code = 0;
     switch (type) {
     case 0:
-       code = nfs2_to_afs_call(which, argp, &fh, &fh2);
+       code = (client && nfs2_to_afs_call(which, argp, &fh, &fh2));
        break;
     case 1:
-       code = acl2_to_afs_call(which, argp, &fh);
+       code = (client && acl2_to_afs_call(which, argp, &fh));
        break;
     default:
        break;
     }
-
+    
     if (code) {
        struct afs_exporter *out = 0;
        afs_int32 dummy;
        static int once = 0;
        struct SmallFid Sfid;
-
+       
        memcpy((char *)&Sfid, fh->fh_data, SIZEOF_SMALLFID);
+       
+       afs_Trace2(afs_iclSetp, CM_TRACE_NFSIN1,
+                  ICL_TYPE_POINTER, client,
+                  ICL_TYPE_FID, &Sfid);
 
        /* We ran */
        call = 1;
@@ -271,44 +281,42 @@ afs_nfs2_dispatcher(int type, afs_int32 which, char *argp,
        }
        code = afs_nfsclient_reqhandler((struct afs_exporter *)0, &crp,
                                        client, &dummy, &out);
-       /* Be careful to release this */
+       
        if (!code && out)
            EXP_RELE(out);
-
-       /* We ran and failed */
-       if (code == EINVAL) 
+       
+       if (code == EINVAL)
            call = 2;
     }
-
+    
     AFS_GUNLOCK();
     return call;
 }
 
-void 
+void
 afs_nfs2_smallfidder(struct nfsdiropres *dr)
 {
     register fhandle_t *fhp = (fhandle_t *)&dr->dr_fhandle;
     afs_int32 addr[2];
     struct vcache *vcp;
-
+    
 #if defined(AFS_SUN57_64BIT_ENV)
     /* See also afs_fid() */    
-    memcpy((char *)addr, fhp->fh_data, 10);
+    memcpy((char *)addr, fhp->fh_data, SIZEOF_SMALLFID);
     addr[1] = (addr[1] >> 48) & 0xffff;
 #else 
     memcpy((char *)addr, fhp->fh_data, 2 * sizeof(long));
 #endif
-
+    
     AFS_GLOCK();
     vcp = VTOAFS((struct vnode*)addr[0]);
-
-    /* See also afs_osi_vget */
+    
     if (addr[1] == AFS_XLATOR_MAGIC)
     {
        if (dr->dr_status == NFS_OK) {
            struct SmallFid Sfid;
            struct cell *tcell;
-
+           
            /* Make up and copy out a SmallFid */
            tcell = afs_GetCell(vcp->fid.Cell, READ_LOCK);
            Sfid.Volume = vcp->fid.Fid.Volume;
@@ -318,12 +326,15 @@ afs_nfs2_smallfidder(struct nfsdiropres *dr)
            Sfid.Vnode = (u_short)(vcp->fid.Fid.Vnode & 0xffff);
            fhp->fh_len = SIZEOF_SMALLFID;
            memcpy(dr->dr_fhandle.fh_data, (char*)&Sfid, fhp->fh_len);
-       }
 
+           afs_Trace3(afs_iclSetp, CM_TRACE_NFSOUT, ICL_TYPE_INT32, 0,
+                       ICL_TYPE_POINTER, vcp, ICL_TYPE_FID, &Sfid);
+       }
+       
        /* If we have a ref, release it */
-       if (vcp->vrefCount >= 1) 
+       if (vcp->vrefCount >= 1)
            AFS_RELE(AFSTOV(vcp));
-    } 
+    }
     AFS_GUNLOCK();
 }
 
@@ -337,44 +348,183 @@ void afs_nfs2_null(char *args, char *xp, char *exp, char *rp, char *crp)
 {
 }
 
-void 
+void
 afs_nfs2_root(char *args, char *xp, char *exp, char *rp, char *crp)
 {
 }
 
-void 
+void
 afs_nfs2_writecache(char *args, char *xp, char *exp, char *rp, char *crp)
 {
 }
 
-#define NFS_V2_REQ(FUNCNAME, RFSOP, POST) \
-void FUNCNAME(char *args, char *xp, char *exp, char *rp, char *crp) { \
-    u_int call; \
-    struct cred *svcred = curthread->t_cred; \
-    curthread->t_cred = (struct cred*)crp; \
-    call=afs_nfs2_dispatcher(0, RFSOP, (char *)args, &exp, rp, crp); \
-    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); \
-    else { (*afs_rfs_disp_tbl[RFSOP].orig_proc)(args, xp, exp, rp, crp); \
-    if (POST && afs_NFSRootOnly && call) afs_nfs2_smallfidder(xp); } \
-    curthread->t_cred = svcred; \
-    return; \
-}
-
-NFS_V2_REQ(afs_nfs2_getattr, RFS_GETATTR, 0) 
-NFS_V2_REQ(afs_nfs2_setattr, RFS_SETATTR, 0)
-NFS_V2_REQ(afs_nfs2_lookup, RFS_LOOKUP, 1)
-NFS_V2_REQ(afs_nfs2_readlink, RFS_READLINK, 0)
-NFS_V2_REQ(afs_nfs2_read, RFS_READ, 0)
-NFS_V2_REQ(afs_nfs2_write, RFS_WRITE, 0)
-NFS_V2_REQ(afs_nfs2_create, RFS_CREATE, 1)
-NFS_V2_REQ(afs_nfs2_remove, RFS_REMOVE, 0)
-NFS_V2_REQ(afs_nfs2_rename, RFS_RENAME, 0)
-NFS_V2_REQ(afs_nfs2_link, RFS_LINK, 0)
-NFS_V2_REQ(afs_nfs2_symlink, RFS_SYMLINK, 0)
-NFS_V2_REQ(afs_nfs2_mkdir, RFS_MKDIR, 1)
-NFS_V2_REQ(afs_nfs2_rmdir, RFS_RMDIR, 0)
-NFS_V2_REQ(afs_nfs2_readdir, RFS_READDIR, 0)
-NFS_V2_REQ(afs_nfs2_statfs, RFS_STATFS, 0)
+void afs_nfs2_getattr(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_GETATTR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_GETATTR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_setattr(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_SETATTR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_SETATTR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_lookup(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_LOOKUP, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else { (*afs_rfs_disp_tbl[RFS_LOOKUP].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) afs_nfs2_smallfidder(xp); } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_readlink(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_READLINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_READLINK].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_read(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_READ, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_READ].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_write(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_WRITE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_WRITE].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_create(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_CREATE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else { (*afs_rfs_disp_tbl[RFS_CREATE].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) afs_nfs2_smallfidder(xp); } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_remove(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_REMOVE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_REMOVE].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_rename(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_RENAME, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_RENAME].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_link(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_LINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_LINK].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_symlink(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_SYMLINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_SYMLINK].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_mkdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_MKDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else { (*afs_rfs_disp_tbl[RFS_MKDIR].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) afs_nfs2_smallfidder(xp); } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_rmdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_RMDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_RMDIR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_readdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_READDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_READDIR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs2_statfs(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(0, RFS_STATFS, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_rfs_disp_tbl[RFS_STATFS].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
 
 struct afs_nfs_disp_tbl afs_rfs_disp_tbl[RFS_NPROC] = {
     { afs_nfs2_null },
@@ -384,12 +534,12 @@ struct afs_nfs_disp_tbl afs_rfs_disp_tbl[RFS_NPROC] = {
     { afs_nfs2_lookup },
     { afs_nfs2_readlink },
     { afs_nfs2_read },
-    { afs_nfs2_writecache },   
+    { afs_nfs2_writecache },
     { afs_nfs2_write },
     { afs_nfs2_create },
-    { afs_nfs2_remove },       
+    { afs_nfs2_remove },
     { afs_nfs2_rename },
-    { afs_nfs2_link }, 
+    { afs_nfs2_link },
     { afs_nfs2_symlink },
     { afs_nfs2_mkdir },
     { afs_nfs2_rmdir },
@@ -397,57 +547,84 @@ struct afs_nfs_disp_tbl afs_rfs_disp_tbl[RFS_NPROC] = {
     { afs_nfs2_statfs }
 };
 
-#define ACL_V2_REQ(FUNCNAME, ACLOP) \
-void FUNCNAME(char *args, char *xp, char *exp, char *rp, char *crp) { \
-    u_int call; \
-    struct cred *svcred = curthread->t_cred; \
-    curthread->t_cred = (struct cred*)crp; \
-    call=afs_nfs2_dispatcher(1, ACLOP, (char *)args, &exp, rp, crp); \
-    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); \
-    else (*afs_rfs_disp_tbl[ACLOP].orig_proc)(args, xp, exp, rp, crp); \
-    curthread->t_cred = svcred; \
-    return; \
-}
-
-ACL_V2_REQ(afs_acl2_getacl, ACLPROC2_GETACL)
-ACL_V2_REQ(afs_acl2_setacl, ACLPROC2_SETACL)
-ACL_V2_REQ(afs_acl2_getattr, ACLPROC2_GETATTR)
-ACL_V2_REQ(afs_acl2_access, ACLPROC2_ACCESS)
-
-struct afs_nfs_disp_tbl afs_acl_disp_tbl[ACL2_NPROC] = {
-    { afs_nfs2_null }, 
-    { afs_acl2_getacl }, 
+void afs_acl2_getacl(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(1, ACLPROC2_GETACL, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_acl_disp_tbl[ACLPROC2_GETACL].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_acl2_setacl(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(1, ACLPROC2_SETACL, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_acl_disp_tbl[ACLPROC2_SETACL].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_acl2_getattr(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(1, ACLPROC2_GETATTR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_acl_disp_tbl[ACLPROC2_GETATTR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_acl2_access(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs2_dispatcher(1, ACLPROC2_ACCESS, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs2_noaccess((struct afs_nfs2_resp *)xp); 
+    else (*afs_acl_disp_tbl[ACLPROC2_ACCESS].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+struct afs_nfs_disp_tbl afs_acl_disp_tbl[5] = {
+    { afs_nfs2_null },
+    { afs_acl2_getacl },
     { afs_acl2_setacl },
-    { afs_acl2_getattr }, 
-    { afs_acl2_access } 
+    { afs_acl2_getattr },
+    { afs_acl2_access }
 };
 
 /* Munge the dispatch tables to link us in first */
-void 
-afs_xlatorinit_v2(struct rfs_disp_tbl *_rfs_tbl, 
-                 struct rfs_disp_tbl *_acl_tbl)
+void
+afs_xlatorinit_v2(struct rfs_disp_tbl *_rfs_tbl,
+                  struct rfs_disp_tbl *_acl_tbl)
 {
     int i;
-
+    
     if (xlatorinit_v2_done++) return;
-
+    
     for (i=0; i < RFS_NPROC; i++) {
        afs_rfs_disp_tbl[i].orig_proc = _rfs_tbl[i].dis_proc;
        _rfs_tbl[i].dis_proc = afs_rfs_disp_tbl[i].afs_proc;
     }
-
-    for (i=0; i < ACL2_NPROC; i++) {
+    
+    for (i=0; i < 5; i++) {
        afs_acl_disp_tbl[i].orig_proc = _acl_tbl[i].dis_proc;
        _acl_tbl[i].dis_proc = afs_acl_disp_tbl[i].afs_proc;
     }
 }
 
 #ifndef RFS3_NPROC
-#define RFS3_NPROC     22
+#define RFS3_NPROC      22
 #endif
 
 #ifndef ACL3_NPROC
-#define ACL3_NPROC     3
+#define ACL3_NPROC      3
 #endif
 
 struct afs_nfs_disp_tbl afs_rfs3_disp_tbl[RFS3_NPROC];
@@ -455,14 +632,14 @@ struct afs_nfs_disp_tbl afs_acl3_disp_tbl[ACL3_NPROC];
 
 struct afs_nfs3_resp {
     nfsstat3 status;
-    bool_t flags; 
+    bool_t flags;
 };
 typedef struct afs_nfs3_resp afs_nfs3_resp;
 
-static int 
+static int
 is_afs_fh3(nfs_fh3 *fhp) {
     if ((fhp->fh3_fsid.val[0] == AFS_VFSMAGIC) &&
-       (fhp->fh3_fsid.val[1] == AFS_VFSFSID)) 
+       (fhp->fh3_fsid.val[1] == AFS_VFSFSID))
        return 1;
     return 0;
 }
@@ -474,197 +651,201 @@ afs_nfs3_noaccess(struct afs_nfs3_resp *resp)
     resp->flags = FALSE;
 }
 
-afs_int32 
+afs_int32
 nfs3_to_afs_call(int which, caddr_t *args, nfs_fh3 **fhpp, nfs_fh3 **fh2pp)
 {
     struct vnode *vp;
     nfs_fh3 *fhp1=0;
     nfs_fh3 *fhp2=0;
     int errorcode;
-
+    
+    afs_Trace1(afs_iclSetp, CM_TRACE_NFS3IN, ICL_TYPE_INT32, which);
     *fh2pp = (nfs_fh3 *)0;
     switch (which) {
-        case NFSPROC3_GETATTR: 
-       {
-            GETATTR3args *arg = (GETATTR3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object;
-            break;
-        } 
-        case NFSPROC3_SETATTR: 
-       {
-            SETATTR3args *arg = (SETATTR3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object;
-            break;
-        } 
-        case NFSPROC3_LOOKUP: 
-       {
-            LOOKUP3args *arg = (LOOKUP3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->what.dirp;
-            break;
-        } 
-        case NFSPROC3_ACCESS: 
-       {
-            ACCESS3args *arg = (ACCESS3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object;
-            break;
-        } 
-        case NFSPROC3_READLINK: 
-       {
-            READLINK3args *arg = (READLINK3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->symlink;       
-            break;
-        } 
-        case NFSPROC3_READ: 
-       {
-            READ3args *arg = (READ3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->file;
-            break;
-        } 
-        case NFSPROC3_WRITE: 
-       {
-            WRITE3args *arg = (WRITE3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->file;
-            break;
-        } 
-        case NFSPROC3_CREATE: 
-       {
-            CREATE3args *arg = (CREATE3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->where.dir;
-            break;
-        } 
-        case NFSPROC3_MKDIR: 
-       {
-            MKDIR3args *arg = (MKDIR3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->where.dir;
-            break;
-        } 
-        case NFSPROC3_SYMLINK: 
-       {
-            SYMLINK3args *arg = (SYMLINK3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->where.dir;
-            break;
-        } 
-        case NFSPROC3_MKNOD:
-       {
-            MKNOD3args *arg = (MKNOD3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->where.dir;
-            break;
-        } 
-        case NFSPROC3_REMOVE: 
-       {
-            REMOVE3args *arg = (REMOVE3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object.dir;
-            break;
-        } 
-        case NFSPROC3_RMDIR: 
-       {
-            RMDIR3args *arg = (RMDIR3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object.dir;
-            break;
-        } 
-        case NFSPROC3_RENAME: 
-       {
-            RENAME3args *arg = (RENAME3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->from.dir;
-            fhp2 = (nfs_fh3 *) &arg->to.dir;
-            break;
-        } 
-        case NFSPROC3_LINK: 
-       {
-            LINK3args *arg = (LINK3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->file;
-            fhp2 = (nfs_fh3 *) &arg->link.dir;
-            break;
-        } 
-        case NFSPROC3_READDIR: 
-       {
-            READDIR3args *arg = (READDIR3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->dir;
-            break;
-        } 
-        case NFSPROC3_READDIRPLUS: 
-       {
-            READDIRPLUS3args *arg = (READDIRPLUS3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->dir;
-            break;
-        } 
-        case NFSPROC3_FSSTAT: 
-       {
-            FSSTAT3args *arg = (FSSTAT3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->fsroot;
-            break;
-        } 
-        case NFSPROC3_FSINFO: 
-       {
-            FSINFO3args *arg = (FSINFO3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->fsroot;
-            break;
-        } 
-        case NFSPROC3_PATHCONF: 
-       {
-            PATHCONF3args *arg = (PATHCONF3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->object;
-            break;
-        } 
-        case NFSPROC3_COMMIT: 
-       {
-            COMMIT3args *arg = (COMMIT3args *)args;
-            fhp1 = (nfs_fh3 *) &arg->file;
-            break;
-        }
-       default:
-           return NULL;
+    case NFSPROC3_GETATTR:
+    {
+       GETATTR3args *arg = (GETATTR3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object;
+       break;
     }
-
-    /* Ok if arg 1 is in AFS or if 2 args and arg 2 is in AFS */
+    case NFSPROC3_SETATTR:
+    {
+       SETATTR3args *arg = (SETATTR3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object;
+       break;
+    }
+    case NFSPROC3_LOOKUP:
+    {
+       LOOKUP3args *arg = (LOOKUP3args *)args;
+#ifdef AFS_SUN57_ENV
+       fhp1 = (nfs_fh3 *) &arg->what.dirp;
+#else
+       fhp1 = (nfs_fh3 *) &arg->what.dir;
+#endif
+       break;
+    }
+    case NFSPROC3_ACCESS:
+    {
+       ACCESS3args *arg = (ACCESS3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object;
+       break;
+    }
+    case NFSPROC3_READLINK:
+    {
+       READLINK3args *arg = (READLINK3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->symlink;
+       break;
+    }
+    case NFSPROC3_READ:
+    {
+       READ3args *arg = (READ3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->file;
+       break;
+    }
+    case NFSPROC3_WRITE:
+    {
+       WRITE3args *arg = (WRITE3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->file;
+       break;
+    }
+    case NFSPROC3_CREATE:
+    {
+       CREATE3args *arg = (CREATE3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->where.dir;
+       break;
+    }
+    case NFSPROC3_MKDIR:
+    {
+       MKDIR3args *arg = (MKDIR3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->where.dir;
+       break;
+    }
+    case NFSPROC3_SYMLINK:
+    {
+       SYMLINK3args *arg = (SYMLINK3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->where.dir;
+       break;
+    }
+    case NFSPROC3_MKNOD:
+    {
+       MKNOD3args *arg = (MKNOD3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->where.dir;
+       break;
+    }
+    case NFSPROC3_REMOVE:
+    {
+       REMOVE3args *arg = (REMOVE3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object.dir;
+       break;
+    }
+    case NFSPROC3_RMDIR:
+    {
+       RMDIR3args *arg = (RMDIR3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object.dir;
+       break;
+    }
+    case NFSPROC3_RENAME:
+    {
+       RENAME3args *arg = (RENAME3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->from.dir;
+       fhp2 = (nfs_fh3 *) &arg->to.dir;
+       break;
+    }
+    case NFSPROC3_LINK:
+    {
+       LINK3args *arg = (LINK3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->file;
+       fhp2 = (nfs_fh3 *) &arg->link.dir;
+       break;
+    }
+    case NFSPROC3_READDIR:
+    {
+       READDIR3args *arg = (READDIR3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->dir;
+       break;
+    }
+    case NFSPROC3_READDIRPLUS:
+    {
+       READDIRPLUS3args *arg = (READDIRPLUS3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->dir;
+       break;
+    }
+    case NFSPROC3_FSSTAT:
+    {
+       FSSTAT3args *arg = (FSSTAT3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->fsroot;
+       break;
+    }
+    case NFSPROC3_FSINFO:
+    {
+       FSINFO3args *arg = (FSINFO3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->fsroot;
+       break;
+    }
+    case NFSPROC3_PATHCONF:
+    {
+       PATHCONF3args *arg = (PATHCONF3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->object;
+       break;
+    }
+    case NFSPROC3_COMMIT:
+    {
+       COMMIT3args *arg = (COMMIT3args *)args;
+       fhp1 = (nfs_fh3 *) &arg->file;
+       break;
+    }
+    default:
+       return NULL;
+    }
+    
     if (is_afs_fh3(fhp1)) {
        *fhpp = fhp1;
-       if (fhp2) 
+       if (fhp2)
            *fh2pp = fhp2;
-       return 1;           
+       return 1;
     }
-    if (is_afs_fh3(fhp2)) {
+    if (fhp2 && is_afs_fh3(fhp2)) {
        *fhpp = fhp1;
        *fh2pp = fhp2;
-       return 1;           
+       return 1;
     }
     return NULL;
 }
 
-afs_int32 
+afs_int32
 acl3_to_afs_call(int which, caddr_t *args, nfs_fh3 **fhpp)
 {
     nfs_fh3 *fhp;
-
+    
     switch(which) {
-    case ACLPROC3_GETACL: 
+    case ACLPROC3_GETACL:
     {
-        struct GETACL3args *sargs = (struct GETACL3args *) args;
-        fhp = &sargs->fh;
-        break;
+       struct GETACL3args *sargs = (struct GETACL3args *) args;
+       fhp = &sargs->fh;
+       break;
     }
-    case ACLPROC3_SETACL: 
+    case ACLPROC3_SETACL:
     {
-        struct SETACL3args *sargs = (struct SETACL3args *) args;
-        fhp = &sargs->fh;
-        break;
+       struct SETACL3args *sargs = (struct SETACL3args *) args;
+       fhp = &sargs->fh;
+       break;
     }
     default:
        return NULL;
     }
-
+    
     if (is_afs_fh3(fhp)) {
        *fhpp = fhp;
        return 1;
     }
-
+    
     return NULL;
 }
 
 int
-afs_nfs3_dispatcher(int type, afs_int32 which, char *argp, 
-                   struct exportinfo **expp, 
-                   struct svc_req *rp, struct AFS_UCRED *crp)
+afs_nfs3_dispatcher(int type, afs_int32 which, char *argp,
+                    struct exportinfo **expp,
+                    struct svc_req *rp, struct AFS_UCRED *crp)
 {
     afs_int32 call = 0;
     afs_int32 code = 0;
@@ -672,35 +853,39 @@ afs_nfs3_dispatcher(int type, afs_int32 which, char *argp,
     struct sockaddr *sa;
     nfs_fh3 *fh = (nfs_fh3 *)argp;
     nfs_fh3 *fh2 = (nfs_fh3 *)0;
-
+    
     if (!xlatorinit_v3_done)
        return 2;
-
+    
     sa = (struct sockaddr *)svc_getrpccaller(rp->rq_xprt)->buf;
-    client = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
-
+    if (sa->sa_family == AF_INET) 
+       client = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
+    
     AFS_GLOCK();
     code = 0;
     switch (type) {
     case 0:
-       code = nfs3_to_afs_call(which, argp, &fh, &fh2);
+       code = (client && nfs3_to_afs_call(which, argp, &fh, &fh2));
        break;
     case 1:
-       code = acl3_to_afs_call(which, argp, &fh);
+       code = (client && acl3_to_afs_call(which, argp, &fh));
        break;
     default:
        break;
     }
-
+    
     if (code) {
        struct afs_exporter *out = 0;
        afs_int32 dummy;
        static int once = 0;
        struct SmallFid Sfid;
-
+       
        memcpy((char *)&Sfid, fh->fh3_data, SIZEOF_SMALLFID);
+       
+       afs_Trace2(afs_iclSetp, CM_TRACE_NFS3IN1,
+                  ICL_TYPE_INT32, client,
+                  ICL_TYPE_FID, &Sfid);
 
-       /* We ran */
        call = 1;
        if (!once && *expp) {
            afs_nobody = (*expp)->exi_export.ex_anon;
@@ -708,25 +893,25 @@ afs_nfs3_dispatcher(int type, afs_int32 which, char *argp,
        }
        code = afs_nfsclient_reqhandler((struct afs_exporter *)0, &crp,
                                        client, &dummy, &out);
-       /* Be careful to release this */
+       
        if (!code && out)
            EXP_RELE(out);
-
-       /* We ran and failed */
-       if (code == EINVAL) 
+       
+       
+       if (code == EINVAL)
            call = 2;
     }
-
+    
     AFS_GUNLOCK();
     return call;
 }
 
-void 
+void
 afs_nfs3_smallfidder(struct nfs_fh3 *fhp, int status)
 {
     afs_int32 addr[2];
     struct vcache *vcp;
-
+    
 #if defined(AFS_SUN57_64BIT_ENV)
     /* See also afs_fid() */    
     memcpy((char *)addr, fhp->fh3_data, 10);
@@ -734,18 +919,18 @@ afs_nfs3_smallfidder(struct nfs_fh3 *fhp, int status)
 #else 
     memcpy((char *)addr, fhp->fh3_data, 2 * sizeof(long));
 #endif
-
+    
     AFS_GLOCK();
     vcp = VTOAFS((struct vnode*)addr[0]);
-
+    
     /* See also afs_osi_vget */
     if (addr[1] == AFS_XLATOR_MAGIC)
     {
        if (status == NFS_OK) {
            struct SmallFid Sfid;
            struct cell *tcell;
-
-           /* Make up and copy out a SmallFid */
+           
+           /* Make up and copy out a SmallFid */       
            tcell = afs_GetCell(vcp->fid.Cell, READ_LOCK);
            Sfid.Volume = vcp->fid.Fid.Volume;
            Sfid.CellAndUnique = ((tcell->cellIndex << 24) |
@@ -754,54 +939,285 @@ afs_nfs3_smallfidder(struct nfs_fh3 *fhp, int status)
            Sfid.Vnode = (u_short)(vcp->fid.Fid.Vnode & 0xffff);
            fhp->fh3_len = SIZEOF_SMALLFID;
            memcpy(fhp->fh3_data, (char*)&Sfid, fhp->fh3_len);
-       }
 
+           afs_Trace3(afs_iclSetp, CM_TRACE_NFS3OUT, ICL_TYPE_INT32, status,
+                      ICL_TYPE_POINTER, vcp, ICL_TYPE_FID, &Sfid);
+       }
+       
        /* If we have a ref, release it */
-       if (vcp->vrefCount >= 1) 
+       if (vcp->vrefCount >= 1)
            AFS_RELE(AFSTOV(vcp));
-    } 
+    }
     AFS_GUNLOCK();
 }
 
-#define NFS_V3_REQ(FUNCNAME, NFSOP, POST, RESP, RESPP) \
-void FUNCNAME(char *args, char *xp, char *exp, char *rp, char *crp) { \
-    u_int call; \
-    afs_nfs3_resp dummy; \
-    struct cred *svcred = curthread->t_cred; \
-    curthread->t_cred = (struct cred*)crp; \
-    call=afs_nfs3_dispatcher(0, NFSOP, (char *)args, &exp, rp, crp); \
-    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); \
-    else { (*afs_rfs3_disp_tbl[NFSOP].orig_proc)(args, xp, exp, rp, crp); \
-    if (POST && afs_NFSRootOnly && call) { \
-    RESP *resp = ( RESP *)xp; \
-    afs_nfs3_smallfidder( RESPP , resp->status); } } \
-    curthread->t_cred = svcred; \
-    return; \
-}
-
-NFS_V3_REQ(afs_nfs3_getattr, NFSPROC3_GETATTR, 0, afs_nfs3_resp, &dummy) 
-NFS_V3_REQ(afs_nfs3_setattr, NFSPROC3_SETATTR, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_lookup, NFSPROC3_LOOKUP, 1, LOOKUP3res, &resp->resok.object)
-NFS_V3_REQ(afs_nfs3_access, NFSPROC3_ACCESS, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_readlink, NFSPROC3_READLINK, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_read, NFSPROC3_READ, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_write, NFSPROC3_WRITE, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_create, NFSPROC3_CREATE, 1, CREATE3res, &resp->resok.obj.handle)
-NFS_V3_REQ(afs_nfs3_mkdir, NFSPROC3_MKDIR, 1, MKDIR3res, &resp->resok.obj.handle)
-NFS_V3_REQ(afs_nfs3_symlink, NFSPROC3_SYMLINK, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_mknod, NFSPROC3_MKNOD, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_remove, NFSPROC3_REMOVE, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_rmdir, NFSPROC3_RMDIR, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_rename, NFSPROC3_RENAME, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_link, NFSPROC3_LINK, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_readdir, NFSPROC3_READDIR, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_readdirplus, NFSPROC3_READDIRPLUS, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_fsstat, NFSPROC3_FSSTAT, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_fsinfo, NFSPROC3_FSINFO, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_pathconf, NFSPROC3_PATHCONF, 0, afs_nfs3_resp, &dummy)
-NFS_V3_REQ(afs_nfs3_commit, NFSPROC3_COMMIT, 0, afs_nfs3_resp, &dummy)
-
-struct afs_nfs_disp_tbl afs_rfs3_disp_tbl[RFS3_NPROC] = {
+void afs_nfs3_getattr(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_GETATTR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_GETATTR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_setattr(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_SETATTR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_SETATTR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_lookup(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_LOOKUP, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else { (*afs_rfs3_disp_tbl[NFSPROC3_LOOKUP].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) { 
+       LOOKUP3res *resp = ( LOOKUP3res *)xp; 
+       afs_nfs3_smallfidder( &resp->resok.object , resp->status); } } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_access(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_ACCESS, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_ACCESS].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_readlink(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_READLINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_READLINK].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_read(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_READ, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_READ].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_write(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_WRITE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_WRITE].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+void afs_nfs3_create(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_CREATE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else { (*afs_rfs3_disp_tbl[NFSPROC3_CREATE].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) { 
+       CREATE3res *resp = ( CREATE3res *)xp; 
+       afs_nfs3_smallfidder( &resp->resok.obj.handle , resp->status); } } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_mkdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_MKDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else { (*afs_rfs3_disp_tbl[NFSPROC3_MKDIR].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) { 
+       MKDIR3res *resp = ( MKDIR3res *)xp; 
+       afs_nfs3_smallfidder( &resp->resok.obj.handle , resp->status); } } 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_symlink(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_SYMLINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else { (*afs_rfs3_disp_tbl[NFSPROC3_SYMLINK].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) {
+        SYMLINK3res *resp = ( SYMLINK3res *)xp;
+        afs_nfs3_smallfidder( &resp->resok.obj.handle , resp->status); } }
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_mknod(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_MKNOD, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else { (*afs_rfs3_disp_tbl[NFSPROC3_MKNOD].orig_proc)(args, xp, exp, rp, crp); 
+    if (afs_NFSRootOnly && call) {
+        MKNOD3res *resp = ( MKNOD3res *)xp;
+        afs_nfs3_smallfidder( &resp->resok.obj.handle , resp->status); } }
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_remove(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_REMOVE, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_REMOVE].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_rmdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_RMDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_RMDIR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_rename(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_RENAME, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_RENAME].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_link(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_LINK, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_LINK].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_readdir(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_READDIR, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_READDIR].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_readdirplus(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_READDIRPLUS, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_READDIRPLUS].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_fsstat(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_FSSTAT, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_FSSTAT].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_fsinfo(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_FSINFO, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_FSINFO].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_pathconf(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_PATHCONF, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_PATHCONF].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+void afs_nfs3_commit(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    afs_nfs3_resp dummy; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(0, NFSPROC3_COMMIT, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_rfs3_disp_tbl[NFSPROC3_COMMIT].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
+
+struct afs_nfs_disp_tbl afs_rfs3_disp_tbl[22] = {
     { afs_nfs2_null },
     { afs_nfs3_getattr },
     { afs_nfs3_setattr },
@@ -814,10 +1230,10 @@ struct afs_nfs_disp_tbl afs_rfs3_disp_tbl[RFS3_NPROC] = {
     { afs_nfs3_mkdir },
     { afs_nfs3_symlink },
     { afs_nfs3_mknod },
-    { afs_nfs3_remove },        
+    { afs_nfs3_remove },
     { afs_nfs3_rmdir },
     { afs_nfs3_rename },
-    { afs_nfs3_link },  
+    { afs_nfs3_link },
     { afs_nfs3_readdir },
     { afs_nfs3_readdirplus },
     { afs_nfs3_fsstat },
@@ -826,44 +1242,51 @@ struct afs_nfs_disp_tbl afs_rfs3_disp_tbl[RFS3_NPROC] = {
     { afs_nfs3_commit }
 };
 
-#define ACL_V3_REQ(FUNCNAME, NFSOP) \
-void FUNCNAME(char *args, char *xp, char *exp, char *rp, char *crp) { \
-    u_int call; \
-    struct cred *svcred = curthread->t_cred; \
-    curthread->t_cred = (struct cred*)crp; \
-    call=afs_nfs3_dispatcher(1, NFSOP, (char *)args, &exp, rp, crp); \
-    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); \
-    else (*afs_rfs3_disp_tbl[NFSOP].orig_proc)(args, xp, exp, rp, crp); \
-    curthread->t_cred = svcred; \
-    return; \
+void afs_acl3_getacl(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(1, ACLPROC3_GETACL, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_acl3_disp_tbl[ACLPROC3_GETACL].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
 }
 
-ACL_V3_REQ(afs_acl3_getacl, ACLPROC3_GETACL)
-ACL_V3_REQ(afs_acl3_setacl, ACLPROC3_SETACL)
+void afs_acl3_setacl(char *args, char *xp, char *exp, char *rp, char *crp) { 
+    u_int call; 
+    struct cred *svcred = curthread->t_cred; 
+    curthread->t_cred = (struct cred*)crp; 
+    call=afs_nfs3_dispatcher(1, ACLPROC3_SETACL, (char *)args, &exp, rp, crp); 
+    if (call>1) afs_nfs3_noaccess((struct afs_nfs3_resp *)xp); 
+    else (*afs_acl3_disp_tbl[ACLPROC3_SETACL].orig_proc)(args, xp, exp, rp, crp); 
+    curthread->t_cred = svcred; 
+    return; 
+}
 
-struct afs_nfs_disp_tbl afs_acl3_disp_tbl[ACL3_NPROC] = {
-    { afs_nfs2_null }, 
-    { afs_acl3_getacl }, 
+struct afs_nfs_disp_tbl afs_acl3_disp_tbl[3] = {
+    { afs_nfs2_null },
+    { afs_acl3_getacl },
     { afs_acl3_setacl },
 };
 
 /* Munge the dispatch tables to link us in first */
-void 
-afs_xlatorinit_v3(struct rfs_disp_tbl *_rfs_tbl, 
+void
+afs_xlatorinit_v3(struct rfs_disp_tbl *_rfs_tbl,
                   struct rfs_disp_tbl *_acl_tbl)
 {
     int i;
-
+    
     if (xlatorinit_v3_done++) return;
-
-    for (i=0; i < RFS3_NPROC; i++) {
-        afs_rfs3_disp_tbl[i].orig_proc = _rfs_tbl[i].dis_proc;
-        _rfs_tbl[i].dis_proc = afs_rfs3_disp_tbl[i].afs_proc;
+    
+    for (i=0; i < 22; i++) {
+       afs_rfs3_disp_tbl[i].orig_proc = _rfs_tbl[i].dis_proc;
+       _rfs_tbl[i].dis_proc = afs_rfs3_disp_tbl[i].afs_proc;
     }
-
-    for (i=0; i < ACL3_NPROC; i++) {
-        afs_acl3_disp_tbl[i].orig_proc = _acl_tbl[i].dis_proc;
-        _acl_tbl[i].dis_proc = afs_acl3_disp_tbl[i].afs_proc;
+    
+    for (i=0; i < 3; i++) {
+       afs_acl3_disp_tbl[i].orig_proc = _acl_tbl[i].dis_proc;
+       _acl_tbl[i].dis_proc = afs_acl3_disp_tbl[i].afs_proc;
     }
 }
 #endif /* !defined(AFS_NONFSTRANS) */
index 8c7fb39c49bbece39fb5f02b6278390d61a8fae0..2bbfc9eb8c3fbae8e7b132efa3481664e15d6521 100644 (file)
@@ -84,6 +84,7 @@ extern void afs_GCPAGs_perproc_func(AFS_PROC *pproc);
 
 /* afs_util.c */
 extern char *afs_cv2string(char *ttp, afs_uint32 aval);
+extern char *afs_strchr(char *s, int c);
 extern void print_internet_address(char *preamble, struct srvAddr *sa,
                            char *postamble, int flag);
 extern afs_int32 afs_data_pointer_to_int32(const void *p);
index 2b9658304e302de717dfc9ce082125138e002e57..24817af5aa6baddb8c71d3bedc275c68efc8e0c8 100644 (file)
@@ -131,6 +131,6 @@ error_table 2 ZCM
        ec      CM_TRACE_RESIDCMD, "ResidencyCmd tvc 0x%x command %d fid (%d:%d.%d.%d)"
        ec      CM_TRACE_DENTRYDELETE, "d_delete inode 0x%x d_name %s/%s"
        ec      CM_TRACE_DENTRYIPUT, "d_iput inode 0x%x d_name %s/%s"
-       ec      CM_TRACE_TRYFLUSHDCACHECHILDREN, "TryFlushDcacheChildren ip 0x%x"
+       ec      CM_TRACE_TRYFLUSHDCACHECHILDREN, "TryFlushDcacheChildren ip 0x%x name %s parent %s"
 end
 
index 6b158dd6ec166bb3c1b0ab0f3f9f0e0dd7471456..c3d807c0c96f3b63a02fdde060f2efde8fd2babe 100644 (file)
@@ -15,7 +15,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_util.c,v 1.1.1.7 2002/09/26 18:57:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_util.c,v 1.1.1.8 2002/12/11 02:36:03 hartmans Exp $");
 
 #include "../afs/stds.h"
 #include "../afs/sysincludes.h"        /* Standard vendor system headers */
@@ -71,6 +71,16 @@ char *afs_cv2string(char *ttp, afs_uint32 aval)
 
 } /*afs_cv2string*/
 
+char *afs_strchr(char *s, int c)
+{
+    char *p;
+   
+    for (p = s; *p; p++)
+      if (*p == c)
+       return p;
+    return NULL;
+}
+
 void print_internet_address(char *preamble, struct srvAddr *sa,
                            char *postamble, int flag)
 {
index 52d20a2d3cc8e705352c4eb4cb53e822513b09ad..e1c270f78cf061585a9b490b0f2cb1a936ec317e 100644 (file)
@@ -38,7 +38,7 @@
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_vcache.c,v 1.1.1.14 2002/09/26 18:57:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_vcache.c,v 1.1.1.15 2002/12/11 02:36:03 hartmans Exp $");
 
 #include "../afs/sysincludes.h" /*Standard vendor system headers*/
 #include "../afs/afsincludes.h" /*AFS-based standard headers*/
@@ -467,6 +467,79 @@ static afs_int32 afs_QueueVCB(struct vcache *avc)
 }
 
 #ifdef AFS_LINUX22_ENV
+
+static void __shrink_dcache_parent(struct dentry * parent)
+{
+       struct dentry *this_parent = parent;
+       struct list_head *next;
+       int found = 0;
+       LIST_HEAD(afs_dentry_unused);
+
+repeat:
+       next = this_parent->d_subdirs.next;
+resume:
+       while (next != &this_parent->d_subdirs) {
+               struct list_head *tmp = next;
+               struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
+               next = tmp->next;
+               if (!DCOUNT(dentry)) {
+                       list_del(&dentry->d_lru);
+                       list_add(&dentry->d_lru, afs_dentry_unused.prev);
+                       found++;
+               }
+               /*
+                * Descend a level if the d_subdirs list is non-empty.
+                */
+               if (!list_empty(&dentry->d_subdirs)) {
+                       this_parent = dentry;
+                       goto repeat;
+               }
+       }
+       /*
+        * All done at this level ... ascend and resume the search.
+        */
+       if (this_parent != parent) {
+               next = this_parent->d_child.next; 
+               this_parent = this_parent->d_parent;
+               goto resume;
+       }
+
+       for (;;) {
+               struct dentry *dentry;
+               struct list_head *tmp;
+
+               tmp = afs_dentry_unused.prev;
+
+               if (tmp == &afs_dentry_unused)
+                       break;
+#ifdef AFS_LINUX24_ENV
+               list_del_init(tmp);
+#else
+               list_del(tmp);
+               INIT_LIST_HEAD(tmp);
+#endif /* AFS_LINUX24_ENV */
+               dentry = list_entry(tmp, struct dentry, d_lru);
+
+#ifdef AFS_LINUX24_ENV
+               /* Unused dentry with a count? */
+               if (DCOUNT(dentry))
+                       BUG();
+#endif
+               DGET(dentry);
+#ifdef AFS_LINUX24_ENV
+               list_del_init(&dentry->d_hash);         /* d_drop */
+#else
+               list_del(&dentry->d_hash);
+               INIT_LIST_HEAD(&dentry->d_hash);
+#endif /* AFS_LINUX24_ENV */
+               DUNLOCK();
+               dput(dentry);
+               DLOCK();
+               if (!--found)
+                       break;
+       }
+}
+
 /* afs_TryFlushDcacheChildren -- Shakes loose vcache references held by
  *                               children of the dentry
  *
@@ -485,51 +558,48 @@ static void afs_TryFlushDcacheChildren(struct vcache *tvc)
     struct list_head *head = &ip->i_dentry;
     struct dentry *dentry;
     
+    AFS_GUNLOCK();
 restart:
+#ifndef old_vcache_scheme
     DLOCK();
     cur = head;
     while ((cur = cur->next) != head) {
        dentry = list_entry(cur, struct dentry, d_alias);
-#ifdef notdef
-       if (DCOUNT(dentry)) {
-           this_parent = dentry;
-       repeat:
-           next = this_parent->d_subdirs.next;
-       resume:
-           while (next && next != &this_parent->d_subdirs) {
-               struct list_head *tmp = next;
-               struct dentry *dchld = list_entry(tmp, struct dentry, d_child);
-               
-               next = tmp->next;
-               if (!DCOUNT(dchld) && !dchld->d_inode) {
-                   DGET(dchld);
-                   AFS_GUNLOCK();
-                   DUNLOCK();
-                   d_drop(dchld);
-                   dput(dchld);
-                   AFS_GLOCK();
-                   DLOCK();
-                   goto repeat;
-               }
-               /*
-                * Descend a level if the d_subdirs list is non-empty.
-                */
-               if (!list_empty(&dchld->d_subdirs)) {
-                   this_parent = dchld;
-                   goto repeat;
-               }
-           }
-           
-           /*
-            * All done at this level ... ascend and resume the search.
-            */
-           if (this_parent != dentry) {
-               next = this_parent->d_child.next;
-               this_parent = this_parent->d_parent;
-               goto resume;
-           }
-       }
-#endif
+
+       afs_Trace3(afs_iclSetp, CM_TRACE_TRYFLUSHDCACHECHILDREN,
+                  ICL_TYPE_POINTER, ip,
+                  ICL_TYPE_STRING, dentry->d_parent->d_name.name,
+                  ICL_TYPE_STRING, dentry->d_name.name);
+
+        if (!list_empty(&dentry->d_hash) && !list_empty(&dentry->d_subdirs))
+            __shrink_dcache_parent(dentry);
+
+        if (!DCOUNT(dentry)) {
+            DGET(dentry);
+#ifdef AFS_LINUX24_ENV 
+            list_del_init(&dentry->d_hash);     /* d_drop */
+#else
+           list_del(&dentry->d_hash);
+           INIT_LIST_HEAD(&dentry->d_hash);
+#endif /* AFS_LINUX24_ENV */
+            DUNLOCK();
+            dput(dentry);
+            goto restart;
+        }
+    }
+    DUNLOCK();
+    AFS_GLOCK();
+#else
+restart:
+    DLOCK();
+    cur = head;
+    while ((cur = cur->next) != head) {
+        dentry = list_entry(cur, struct dentry, d_alias);
+
+        afs_Trace3(afs_iclSetp, CM_TRACE_TRYFLUSHDCACHECHILDREN,
+                   ICL_TYPE_POINTER, ip,
+                   ICL_TYPE_STRING, dentry->d_parent->d_name.name,
+                   ICL_TYPE_STRING, dentry->d_name.name);
 
        if (!DCOUNT(dentry)) {
            AFS_GUNLOCK();
@@ -542,7 +612,7 @@ restart:
        }
     }
     DUNLOCK();
-
+#endif
 }
 #endif /* AFS_LINUX22_ENV */
 
index ecaa173b95391416258e5fd0cdcceecbaba01770..5f5d0aab6bbf02acd23a0b87a60cc895b318d3a4 100644 (file)
@@ -72,6 +72,9 @@ struct xfs_inode_info {};
 #include <linux/string.h>
 #include <asm/semaphore.h>
 #include <linux/errno.h>
+#ifdef COMPLETION_H_EXISTS
+#include <linux/completion.h>
+#endif
 
 #else /* AFS_LINUX22_ENV */
 #if defined(AFS_DARWIN_ENV)
index 3795f038fc2d80a6456f4ef3d114542cf35ea3eb..b14446b7dde664f4eea0ace4e15f2db765b6593d 100644 (file)
@@ -55,7 +55,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/afsd.c,v 1.1.1.15 2002/09/26 19:04:22 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/afsd.c,v 1.1.1.16 2002/12/11 02:41:43 hartmans Exp $");
 
 #define VFS 1
 
@@ -1335,6 +1335,10 @@ mainproc(as, arock)
     }
     if (as->parms[27].items) {
        /* -fakestat */
+       enable_fakestat = 2;
+    }
+    if (as->parms[28].items) {
+       /* -fakestat-all */
        enable_fakestat = 1;
     }
 
@@ -1579,7 +1583,7 @@ mainproc(as, arock)
     if (enable_fakestat) {
        if (afsd_verbose)
            printf("%s: Enabling fakestat support in kernel.\n", rn);
-       code = call_syscall(AFSOP_SET_FAKESTAT, 1);
+       code = call_syscall(AFSOP_SET_FAKESTAT, enable_fakestat);
        if (code)
            printf("%s: Error enabling fakestat support.\n", rn);
     }
@@ -1937,7 +1941,8 @@ char **argv; {
                ), "Enable AFSDB support");
     cmd_AddParm(ts, "-files_per_subdir", CMD_SINGLE, CMD_OPTIONAL, "log(2) of the number of cache files per cache subdirectory");
     cmd_AddParm(ts, "-dynroot", CMD_FLAG, CMD_OPTIONAL, "Enable dynroot support");
-    cmd_AddParm(ts, "-fakestat", CMD_FLAG, CMD_OPTIONAL, "Enable fakestat support");
+    cmd_AddParm(ts, "-fakestat", CMD_FLAG, CMD_OPTIONAL, "Enable fakestat support for cross-cell mounts");
+    cmd_AddParm(ts, "-fakestat-all", CMD_FLAG, CMD_OPTIONAL, "Enable fakestat support for all mounts");
     return (cmd_Dispatch(argc, argv));
 }
 
index 69473275391b95a089300894b26b7961f790d36c..ee2b143af5db6be06e8eb7fb3e56a4d22386c5e9 100644 (file)
@@ -14,6 +14,70 @@ ac_cv_linux_exports_tasklist_lock=no)])
 AC_MSG_RESULT($ac_cv_linux_exports_tasklist_lock)
 CPPFLAGS="$save_CPPFLAGS"])
 
+AC_DEFUN(LINUX_EXPORTS_SYS_CALL_TABLE, [
+AC_MSG_CHECKING(for exported sys_call_table)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_exports_sys_call_table,
+[
+AC_TRY_COMPILE(
+[#include <linux/modversions.h>],
+[#ifndef __ver_sys_call_table
+#error sys_call_table not exported
+#endif],
+ac_cv_linux_exports_sys_call_table=yes,
+ac_cv_linux_exports_sys_call_table=no)])
+AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)
+CPPFLAGS="$save_CPPFLAGS"])
+
+AC_DEFUN(LINUX_EXPORTS_INIT_MM, [
+AC_MSG_CHECKING(for exported init_mm)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_exports_init_mm,
+[
+AC_TRY_COMPILE(
+[#include <linux/modversions.h>],
+[#ifndef __ver_init_mm
+#error init_mm not exported
+#endif],
+ac_cv_linux_exports_init_mm=yes,
+ac_cv_linux_exports_init_mm=no)])
+AC_MSG_RESULT($ac_cv_linux_exports_init_mm)
+CPPFLAGS="$save_CPPFLAGS"])
+
+AC_DEFUN(LINUX_EXPORTS_KALLSYMS_SYMBOL, [
+AC_MSG_CHECKING(for exported kallsyms_symbol_to_address)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_symbol,
+[
+AC_TRY_COMPILE(
+[#include <linux/modversions.h>],
+[#ifndef __ver_kallsyms_symbol_to_address
+#error kallsyms_symbol_to_address not exported
+#endif],
+ac_cv_linux_exports_kallsyms_symbol=yes,
+ac_cv_linux_exports_kallsyms_symbol=no)])
+AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)
+CPPFLAGS="$save_CPPFLAGS"])
+
+AC_DEFUN(LINUX_EXPORTS_KALLSYMS_ADDRESS, [
+AC_MSG_CHECKING(for exported kallsyms_address_to_symbol)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_address,
+[
+AC_TRY_COMPILE(
+[#include <linux/modversions.h>],
+[#ifndef __ver_kallsyms_address_to_symbol
+#error kallsyms_address_to_symbol not exported
+#endif],
+ac_cv_linux_exports_kallsyms_address=yes,
+ac_cv_linux_exports_kallsyms_address=no)])
+AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)
+CPPFLAGS="$save_CPPFLAGS"])
+
 AC_DEFUN(LINUX_COMPLETION_H_EXISTS, [
 AC_MSG_CHECKING(for linux/completion.h existance)
 save_CPPFLAGS="$CPPFLAGS"
@@ -21,8 +85,13 @@ CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
 AC_CACHE_VAL(ac_cv_linux_completion_h_exists,
 [
 AC_TRY_COMPILE(
-[#include <linux/completion.h>],
-[struct completion _c;],
+[#include <linux/completion.h>
+#include <linux/version.h>],
+[struct completion _c;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
+lose
+#endif
+],
 ac_cv_linux_completion_h_exists=yes,
 ac_cv_linux_completion_h_exists=no)])
 AC_MSG_RESULT($ac_cv_linux_completion_h_exists)
index ca42600c91c00bf1e0e366d583ca1ae8d0872d45..719835a8fd5265fd6a28967c2ee83f6324352e6e 100644 (file)
@@ -12,7 +12,7 @@ XCFLAGS0=-ldld -lc -Wp,-H200000 -Wl,-a,archive -DAUTH_DBM_LOG +z -Wl,+k -D_LARGE
 XCFLAGS=${XCFLAGS0} +DA1.0
 XCFLAGS64=${XCFLAGS0} +DA2.0W
 MT_CFLAGS=-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}
-XLIBS=@LIB_AFSDB@ -lnsl
+XLIBS=@LIB_AFSDB@
 XLIBELFA=-lelf
 TXLIBS=/usr/lib/libHcurses.a
 MTLIBS=-lpthread
index 43f278963e925c1c294538ef298c474ec9a586d9..9d390b50d283b85f14d340bf4e5b93827057b821 100644 (file)
@@ -37,8 +37,8 @@ APPVER = 4.0
 !ENDIF
 
 #define used in WinNT/2000 installation and program version display
-AFSPRODUCT_VERSION=1.2.2 b
-CELLNAME_DEFAULT=Your Cell Name
+AFSPRODUCT_VERSION=1.2.8
+CELLNAME_DEFAULT=openafs.org
 CELLSERVDB_INSTALL=CellServDB.GrandCentral
 CELLSERVDB_WEB=http://grand.central.org/dl/cellservdb/CellServDB
 #NMAKE_DEFINES=-DDEBUG_VERBOSE
@@ -61,43 +61,10 @@ AFSDEV_BUILDTYPE = NONE
 
 !ENDIF
 
-# Limit default include and library directories to those specified for build.
-
-!IFNDEF AFSDEV_INCLUDE
-!ERROR Must define AFSDEV_INCLUDE to be the default include directories.
-!ENDIF
-
-!IF ((!DEFINED(INCLUDE)) && ([set INCLUDE=$(AFSDEV_INCLUDE)] != 0))
-#    If env. var. INCLUDE not defined then macro assignment won't set it.
-!ERROR Failed setting environment variable INCLUDE.
-!ENDIF
-INCLUDE = $(AFSDEV_INCLUDE)
-
-
-!IFNDEF AFSDEV_LIB
-!ERROR Must define AFSDEV_LIB to be the default library directories.
-!ENDIF
-
-!IF ((!DEFINED(LIB)) && ([set LIB=$(AFSDEV_LIB)] != 0))
-#    If env. var. LIB not defined then macro assignment won't set it.
-!ERROR Failed setting environment variable LIB.
-!ENDIF
-LIB = $(AFSDEV_LIB)
-
-
-# Put default build binary directories at front of path.
-
 !IFNDEF AFSDEV_BIN
 !ERROR Must define AFSDEV_BIN to be the default build binary directories.
 !ENDIF
 
-!IF ((!DEFINED(PATH)) && ([set PATH=$(AFSDEV_BIN)] != 0))
-#    If env. var. PATH not defined then macro assignment won't set it.
-!ERROR Failed setting environment variable PATH.
-!ENDIF
-PATH = $(AFSDEV_BIN);$(PATH)
-
-
 # Undefine WIN32.MAK NODEBUG macro.
 # Always generate full debug info, unless profiling or tuning (see below).
 
@@ -118,6 +85,42 @@ DESTDIR = $(AFSDEV_DESTDIR)
 DESTDIR = $(AFSROOT)\DEST
 !ENDIF
 
+#CHECK which VERSION of the complier we are using
+#v6.0 doesn't work using msvcrtd.lib unless AFSDEV_CRTDEBUG is defined, v7.0 requires it
+!IF ("$(AFSVER)"=="")
+!IF EXISTS("$(DESTDIR)\bin\util_cr.exe")
+!IF EXISTS("$(AFSDEV_BIN)\CL.exe")
+!IF    (([$(DESTDIR)\bin\util_cr.exe __ $(AFSDEV_BIN)\CL.exe 7])==1) 
+AFSVER_CL=70
+!ELSE
+AFSVER_CL=60
+!ENDIF
+!ELSE
+!MESSAGE WARNING-Complier version not available
+!ENDIF
+!ELSE
+!MESSAGE WARNING-Complier version not available
+!ENDIF
+!ENDIF
+
+#CHECK which VERSION of the complier we are using
+#v6.0 doesn't work using msvcrtd.lib unless AFSDEV_CRTDEBUG is defined, v7.0 requires it
+!IF ("$(AFSVER)"=="")
+!IF EXISTS("$(DESTDIR)\bin\util_cr.exe")
+!IF EXISTS("$(AFSDEV_BIN)\CL.exe")
+!IF    (([$(DESTDIR)\bin\util_cr.exe __ $(AFSDEV_BIN)\CL.exe 7])==1) 
+AFSVER_CL=70
+!ELSE
+AFSVER_CL=60
+!ENDIF
+!ELSE
+!MESSAGE WARNING-Complier version not available
+!ENDIF
+!ELSE
+!MESSAGE WARNING-Complier version not available
+!ENDIF
+!ENDIF
+
 # Command macros.
 COPY = copy
 DEL = -del
@@ -184,13 +187,15 @@ afscflags =\
 !IF ("$(AFSDEV_BUILDTYPE)" == "FREE")
 #    Apply full optimization; generate full debug info in obj.
 afscflags = $(afscflags) /Ox /Z7
-ldebug = $(ldebug) -debugtype:both
+ldebug = $(ldebug)
 cdebug = $(cdebug:-Od=)  # avoid annoying override warning (D4025)
+cvarsdll = $(cvarsdll:-MDd=-MD)
 
 !ELSEIF ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
 #    Disable optimization; generate full debug info in obj.
 afscflags = $(afscflags) /Od /Z7
 ldebug = $(ldebug) -debugtype:both
+cdebug = $(cdebug:-Z7=-Z7)  # avoid annoying override warning (D4025)
 !ENDIF
 
 # Set compiler warning level
@@ -215,13 +220,13 @@ afscflags = $(afscflags) /W$(AFSDEV_WARNLEVEL)
 # /FIXED:NO   generates a relocation section in the executable
 
 afslflags =\
-       /FIXED:NO
+       /FIXED:NO /VERBOSE:LIB
 
 
 
 # For checked builds, define DEBUG (but not the MS control flag _DEBUG).
 
-!IF ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
+!IF (("$(AFSDEV_BUILDTYPE)" == "CHECKED") && ("$(AFSVER_CL)"=="60"))
 afscdefs = $(afscdefs) -DDEBUG
 !ENDIF
 
@@ -267,7 +272,7 @@ mfcdlllflags = $(mfcdlllflags) /NODEFAULTLIB:msvcrt.lib
 # Macros for creating/modifying binary targets
 
 # EXE link macro for console applications
-EXECONLINK = $(link) /OUT:$@ $(ldebug) $(conlflags) $(afslflags) $(conlibsdll) $**
+EXECONLINK = $(link) /OUT:$@ $(ldebug) $(conlflags) $(afslflags) $(conlibsdll) version.lib $**
 
 # EXE link macro for GUI applications
 EXEGUILINK = $(link) /OUT:$@ $(ldebug) $(guilflags) $(afslflags) $(guilibsdll) $**
@@ -279,11 +284,23 @@ EXEMFCLINK = $(link) /OUT:$@ $(ldebug) $(mfclflags) $(afslflags) $(mfclibsdll) $
 DLLCONLINK = $(link) /OUT:$@ $(ldebug) $(dlllflags) $(afslflags) $(conlibsdll) $**
 
 # DLL link macro for GUI applications
+!IF ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
+DLLGUILINK = $(link) /OUT:$@ /NODEFAULTLIB:LIBC $(ldebug) $(dlllflags) $(afslflags) $(guilibsdll)  $**
+!ELSE
 DLLGUILINK = $(link) /OUT:$@ $(ldebug) $(dlllflags) $(afslflags) $(guilibsdll) $**
+!ENDIF
 
 # DLL link macro for MFC applications
 DLLMFCLINK = $(link) /OUT:$@ $(ldebug) $(mfcdlllflags) $(afslflags) $(mfclibsdll) $**
 
+#v6.0 doesn't work using msvcrtd.lib unless AFSDEV_CRTDEBUG is defined, v7.0 requires it
+!IFNDEF AFSDEV_CRTDEBUG
+!IF ("$(AFSVER_CL)"=="60")
+EXEMFCLINK=$(EXEMFCLINK:/NODEFAULTLIB:msvcrtd.lib=)
+DLLMFCLINK=$(DLLMFCLINK:/NODEFAULTLIB:msvcrtd.lib=)
+!ENDIF
+!ENDIF
+
 # DLL link macro for resource-only DLLs
 DLLRESLINK = $(link) /OUT:$@ $(dlllflags:-entry:_DllMainCRTStartup@12=-noentry) $(afslflags) $**
 
index 13799adf9db9e792f07bf09e4786f70ebdaef8a6..7d2c950d6a69f3038be47e417ce7a460563a5917 100644 (file)
@@ -11,7 +11,6 @@
 #     AFSDEV_BUILDTYPE = [ CHECKED | FREE ]
 #     AFSDEV_INCLUDE = <default include directories>
 #     AFSDEV_LIB = <default library directories>
-#     AFSDEV_BIN = <default build binary directories>
 #
 # Optional definitions:
 #     AFSDEV_DESTDIR = <top-level install directory>  (default is $(AFSROOT)\DEST)
@@ -94,20 +93,6 @@ INCLUDE = $(AFSDEV_INCLUDE)
 !ENDIF
 LIB = $(AFSDEV_LIB)
 
-
-# Put default build binary directories at front of path.
-
-!IFNDEF AFSDEV_BIN
-!ERROR Must define AFSDEV_BIN to be the default build binary directories.
-!ENDIF
-
-!IF ((!DEFINED(PATH)) && ([set PATH=$(AFSDEV_BIN)] != 0))
-#    If env. var. PATH not defined then macro assignment won't set it.
-!ERROR Failed setting environment variable PATH.
-!ENDIF
-PATH = $(AFSDEV_BIN);$(PATH)
-
-
 # Undefine WIN32.MAK NODEBUG macro.
 # Always generate full debug info, unless profiling or tuning (see below).
 
index 035cf418a24a0165cede0762705bf1eca3a3921e..408da36c994bafaf5402b7a3370003ad66a0fc3a 100644 (file)
@@ -14,11 +14,11 @@ VERSFILE=AFS_component_version_number
 !ENDIF
 
 $(VERSFILE).c:
-       echo char $(CML_PREFIX)cml_version_number[]="@(#)CML not accessible: No version information"; >$(VERSFILE).c
-       echo char* AFSVersion = "afs??";  >>$(VERSFILE).c
+       echo char $(CML_PREFIX)cml_version_number[]="@(#)OpenAFS$(AFSPRODUCT_VERSION)"; >$(VERSFILE).c
+       echo char* AFSVersion = "OpenAFS$(AFSPRODUCT_VERSION)";  >>$(VERSFILE).c
 
 $(VERSFILE).h:
-       echo #define AFS_VERINFO_BUILD "CML not accessible: No version information" >$(VERSFILE).h
+       echo #define AFS_VERINFO_BUILD "OpenAFS$(AFSPRODUCT_VERSION)" >$(VERSFILE).h
 
 $(VERSFILE).txt:
-       echo CML not accessible: No version information >$(VERSFILE).txt
+       echo OpenAFS$(AFSPRODUCT_VERSION)>$(VERSFILE).txt
index 7af67ffc792d434ee47f6a7f1c98d735a8a9f1a4..cb5fc78ae4655469a882b262af3ab4d06241d2df 100644 (file)
  * supress the warnings.
  */
 struct uio;
+
+#define memset(A, B, S) bzero(A, S)
+#define memcpy(B, A, S) bcopy(A, B, S)
+#define memcmp(A, B, S) bcmp(A, B, S)
 #endif
 #endif /* KERNEL */
 #define        AFS_DIRENT      
index 15e54e0c85d1a5f96e5508e66f1459501575cb20..77e77e8881a28cd693a3b4c7567dea2559c1fa06 100644 (file)
@@ -16,6 +16,8 @@
 #include "windows.h"
 #include "malloc.h"
 #include "time.h"
+#include "stdlib.h"
+#include <Winver.h>
 
 void usuage()
 {
@@ -29,10 +31,149 @@ void usuage()
        OR util_cr * \"-[register key value]\" ; aremove register key value\n\
        OR util_cr @ file.ini \"[SectionKey]variable=value\" ; update ini-ipr-pwf file\n\
        OR util_cr @ file.ini \"[SectionKey]variable=value*DatE*\" ; update ini-ipr-pwf file, insert date\n\
-       OR util_cr ~  ;force error\n");
+       OR util_cr ~  ;force error\n\
+       OR util_cr _ [nt xp 98 9x w2] ;test for OS, return 1 if match else 0\n\
+       OR util_cr _ [nt xp 98 9x w2] _[command] [true options] [false options] [paramters] \n\t test for OS; execute command with options\n");
        exit(0xc000);
 }
 
+struct TRANSLATION {
+               WORD langID;         // language ID
+               WORD charset;        // character set (code page)
+};
+
+int CheckProductVersion (int argc,char *argv[])
+{
+       DWORD wHandle;
+       DWORD rc;
+       UINT len;
+       char query[1024];
+       BYTE *lpData;
+       struct TRANSLATION mTrans,* pTrans;
+       LPCTSTR pVal;
+       UINT iLenVal;
+       int ret;
+       lpData=NULL;
+       ret=0;
+/*     printf("1=%s,2=%s\n",argv[2],argv[3]);*/
+       rc =GetFileVersionInfoSize(argv[2],&wHandle);
+       if (rc>0)
+       {
+               lpData=(BYTE *)malloc(rc*sizeof(BYTE));
+               if (GetFileVersionInfo(argv[2],wHandle,rc,lpData))
+               {
+                       if (VerQueryValue(lpData,
+                               "\\VarFileInfo\\Translation", (PVOID *)&pTrans, &len) && len >= 4) {
+                               mTrans = *pTrans;
+                       }
+                       sprintf(query,"\\StringFileInfo\\%04x%04x\\%s",mTrans.langID,mTrans.charset,"ProductVersion");
+                       if (VerQueryValue(lpData, (LPTSTR)(LPCTSTR)query,
+                               (LPVOID*)&pVal, &iLenVal)) {
+                               ret=(atoi(pVal)>=atoi(argv[3]))?1:0;
+                       }
+               }
+               if (lpData)
+                       free(lpData);
+       }
+       return ret;
+}
+
+int CheckVersion(int argc,char *argv[])
+{
+       OSVERSIONINFO VersionInfo;
+       int i;
+       memset(&VersionInfo,0,sizeof(VersionInfo));
+       VersionInfo.dwOSVersionInfoSize =sizeof(OSVERSIONINFO);
+       if (!GetVersionEx(&VersionInfo))
+       {
+               return 0XC000;
+       }
+       for (i=1;i<argc;i++)
+       {
+               if (stricmp(argv[i],"nt")==0)
+               {
+                       if ((VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_NT) 
+                               && (VersionInfo.dwMajorVersion==4)
+                               && (VersionInfo.dwMinorVersion==0))
+                               return 1;
+               }
+               if (stricmp(argv[i],"xp")==0)
+               {
+                       if ((VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_NT) 
+                               && (VersionInfo.dwMajorVersion==5)
+                               && (VersionInfo.dwMinorVersion==1))
+                               return 1;
+               }
+               if (stricmp(argv[i],"w2")==0)
+               {
+                       if ((VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_NT) 
+                               && (VersionInfo.dwMajorVersion==5)
+                               && (VersionInfo.dwMinorVersion==0))
+                               return 1;
+               }
+               if (stricmp(argv[i],"98")==0)
+               {
+                       if ((VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) && (VersionInfo.dwMinorVersion==10))
+                               return 1;
+               }
+               if (stricmp(argv[i],"95")==0)
+               {
+                       if ((VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) && (VersionInfo.dwMinorVersion==0))
+
+                               return 1;
+               }
+               if (stricmp(argv[i],"9x")==0)
+               {
+                       if (VersionInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
+                               return 1;
+               }
+               if (stricmp(argv[i],"_")==0)
+                       return 0;
+       }
+       return 0;
+}
+
+int DoCheckVersion(int argc,char *argv[])
+{
+       //arg 1 nth versions
+       //arg nth _
+       //arg n+1 command
+       //arg n+2 option true
+       //arg n+3 option false
+       //arg n+4 ... command arguments
+       int x,i;
+       int ret;
+       char command[1024];
+       for (x=1;((x<argc) && (strcmp(argv[x],"_")!=0));x++);
+       if (strcmp(argv[x],"_")!=0)
+               return 0xc000;
+       ret=CheckVersion(argc-x,&argv[x]);
+       if (x+6>=argc)
+       {
+               return ret;
+       }
+       for (++x;((x<argc) && (strcmp(argv[x],"_")!=0));x++);
+       if (strcmp(argv[x],"_")!=0)
+               return 0xc000;
+       i=0;
+       GetSystemDirectory(command,sizeof(command));
+       sprintf(command,"%s\\cmd.exe",command);
+       argv[i++]=command;
+       argv[i++]="/c";
+       argv[i++]=argv[x+1];
+       if (ret) 
+               argv[i++]=argv[x+2];
+       else 
+               argv[i++]=argv[x+3];
+       for (x+=4;x<argc;x++) 
+               argv[i++]=argv[x];
+       argv[i]=NULL;
+/*     for (i=0;argv[i];i++)
+               command=argv[i];
+*/
+       ret=_spawnv(_P_WAIT,argv[0],argv);
+       return 0;
+}
 
 void Addkey (const char *hkey,const char *subkey,const char *stag,const char *sval)
 {
@@ -104,9 +245,16 @@ int main(int argc, char* argv[])
        char **pvar,*ch;
        long len;
        typedef char * CHARP;
-
-       if (argc<3)
+        if (argc<3)
                usuage();
+       if (strcmp(argv[1],"_")==0)
+       {
+               return DoCheckVersion(argc,argv);
+       }
+       if (strcmp(argv[1],"__")==0)
+       {
+               return CheckProductVersion(argc,argv);
+       }
        if (strcmp(argv[1],"}")==0)
        {
                char v1[4],v2[4],v3[4],v4[4];
index 5dca29a0fc5a09baf7fce00daf8069b670e3e78a..bdf3eb33884603378e1a2e7b90cc80c24adc0ec9 100644 (file)
@@ -14,7 +14,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/des/read_pssword.c,v 1.1.1.8 2001/10/14 18:04:48 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/des/read_pssword.c,v 1.1.1.9 2002/12/11 02:43:03 hartmans Exp $");
 
 #include <mit-cpyright.h>
 #include <des.h>
@@ -310,7 +310,7 @@ lose:
     if (!ok)
        memset(s, 0, maxa);
     printf("\n");
-#if defined(AFS_HPUX_ENV) || defined(AFS_XBSD_ENV)
+#if defined(AFS_HPUX_ENV) || defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV)
     /*
      * Restore the terminal to its previous characteristics.
      * Restore the old signal handler for SIGINT.
index 6562701d6f30cfb60ae2ad3bcb618eb072064b75..29830be64c892639b59825b6deafc68f5ba1436c 100644 (file)
@@ -119,7 +119,7 @@ setup:
 
 # Compile the clients.
 ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
-       if false; then \
+       if true; then \
        for b in $(BITS); do \
            for t in $(KOBJ); do \
                dir=$$t.$$b; \
index fac745683dfd9248616a5d630870aca744293103..a5b7c574f30cff4f5777a1c2f643a64dc1e15f84 100644 (file)
@@ -142,9 +142,9 @@ DEST_LIBAFSNONFS = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFSNONFS}
 # Without this line, gmake tries to build libafs.o
 .PHONY: libafs
 
-libafs:        $(LIBAFSNONFS)
-install_libafs:        $(INST_LIBAFSNONFS)
-dest_libafs:   $(DEST_LIBAFSNONFS)
+libafs:        $(LIBAFSNONFS) $(LIBAFS)
+install_libafs:        $(INST_LIBAFSNONFS) $(INST_LIBAFS)
+dest_libafs:   $(DEST_LIBAFSNONFS) $(DEST_LIBAFS)
 
 
 $(INST_LIBAFS): $(LIBAFS)
@@ -170,13 +170,15 @@ ${LIBAFSNONFS}:  $(AFSAOBJS) $(AFSNONFSOBJS)
 
 <sun4x_57 sun4x_58 sun4x_59>
 
-libafs: ${LIBAFSNONFS}
+libafs: ${LIBAFSNONFS} ${LIBAFS}
 
-install_libafs: ${LIBAFSNONFS}
+install_libafs: ${LIBAFSNONFS} ${LIBAFS}
        ${INSTALL} -f ${LIBAFSNONFS} ${DESTDIR}${afskerneldir}/libafs${BITS}.nonfs.o
+       ${INSTALL} -f ${LIBAFS} ${DESTDIR}${afskerneldir}/libafs${BITS}.o
 
-dest_libafs: ${LIBAFSNONFS}
+dest_libafs: ${LIBAFSNONFS} ${LIBAFS}
        ${INSTALL} -f ${LIBAFSNONFS} ${DEST}/root.client/usr/vice/etc/modload/libafs${BITS}.nonfs.o
+       ${INSTALL} -f ${LIBAFS} ${DEST}/root.client/usr/vice/etc/modload/libafs${BITS}.o
 
 <all>
 
index b0ae1e8e1981bcb7e0bac61def4359646ff62b23..c46f297545faee6d15665191845ce37f46a5bb74 100644 (file)
@@ -31,7 +31,7 @@ SHELL = /bin/sh
 include ../config/Makefile.${SYS_NAME}
 
 CC=${MT_CC}
-INCLUDES=-I${TOP_INCDIR} -I.. -I../rx
+INCLUDES=-I${TOP_INCDIR} -I.. -I../rx -I../rxkad
 CFLAGS = ${OPTMZ} ${DBG} ${INCLUDES} -DRXDEBUG ${MT_CFLAGS} -I${TOP_SRCDIR}/config
 SFLAGS=-P -I${TOP_INCDIR}
 RX = ../rx
@@ -63,6 +63,8 @@ XDROBJS =\
        xdr_rx.o \
        xdr_int64.o \
        xdr_afsuuid.o \
+       xdr_update.o \
+       xdr_refernce.o \
        AFS_component_version_number.o
 
 RXOBJS =\
@@ -98,6 +100,8 @@ RXKADOBJS =\
        rxkad_server.o \
        rxkad_common.o \
        ticket.o \
+       ticket5.o \
+       crc.o \
        fcrypt.o \
        crypt_conn.o
 
@@ -197,6 +201,12 @@ rxkad_common.o: ${RXKAD}/rxkad_common.c
 ticket.o: ${RXKAD}/ticket.c
        ${CCRULE}
 
+ticket5.o: ${RXKAD}/ticket5.c
+       ${CCRULE}
+
+crc.o: ${RXKAD}/crc.c
+       ${CCRULE}
+
 fcrypt.o: ${RXKAD}/fcrypt.c
        ${CCRULE}
 
@@ -258,7 +268,7 @@ xdr_afsuuid.o: ${RX}/xdr_afsuuid.c
 #
 #   $ what /opt/langtools/bin/pxdb32
 #   /opt/langtools/bin/pxdb32:
-#           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.1.1.3 $
+#           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.1.1.4 $
 #
 # The problem occurs when -g and -O are both used when compiling des.c.
 # The simplest way to work around the problem is to leave out either -g or -O.
index f8131dd31d3a41e0db3939562de0c9ebe5d5a2d4..eb84cf54012d550303f0fffe5b030967c425586d 100644 (file)
@@ -262,7 +262,8 @@ DLLLIBS =\
        $(DESTDIR)\lib\afspthread.lib \
 !ENDIF
        $(DESTDIR)\lib\afs\afsutil.lib \
-       $(DESTDIR)\lib\afs\afsreg.lib
+       $(DESTDIR)\lib\afs\afsreg.lib  \
+       $(DESTDIR)\lib\afsrxkad.lib
 
 $(DESTDIR)\lib\afsrpc.dll: $(DLLOBJS) $(DLLLIBS)
        $(DLLCONLINK) /DEF:afsrpc.def
index c5bc1e47f7dc59615ff6ec7d59dc06eb66a02aa3..a1584c5184c5e5df88406c3cde98cb399751702a 100644 (file)
+/*
+ * Copyright 2000, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * 
+ * This software has been released under the terms of the IBM Public
+ * License.  For details, see the LICENSE file in the top-level source
+ * directory or online at http://www.openafs.org/dl/license10.html
+ */
+
+/* rx_kmutex.h - mutex and condition variable macros for kernel environment.
+ *
+ * HPUX implementation.
+ */
+
 #ifndef _RX_KMUTEX_H_
 #define _RX_KMUTEX_H_
+
+#if defined(AFS_HPUX110_ENV) && defined(KERNEL)
+/* rx fine grain locking primitives */
+
+#include <sys/ksleep.h>
 #include <sys/spinlock.h>
-#include <sys/sem_sync.h>
+#include <sys/sem_beta.h>
+#include <sys/errno.h>
+#include <net/netmp.h>
+
+#include "../rx/rx_kernel.h" /* For osi_Panic() */
 
 #define RX_ENABLE_LOCKS         1
-extern lock_t*  rx_sleepLock;
 #define AFS_GLOBAL_RXLOCK_KERNEL
 
-#define CV_INIT(cv,a,b,c)
-#define CV_DESTROY(a)
+extern lock_t*  rx_sleepLock;
 
-/* These 3, at least, need to do something */
-#define CV_WAIT(cv, lck) {                                                \
-                        }
+/* We use beta semaphores instead of sync semaphores for Rx locks as
+ * recommended by HP labs. Sync semaphores are not supported by HP
+ * any more.
+ */
 
-#define CV_SIGNAL(cv)    {                                                \
-                         }
+#define CV_INIT(cv,a,b,c) 
 
-#define CV_BROADCAST(cv) {                                                \
-                         }
+/* This is supposed to atomically drop the mutex and go to sleep
+ * and reacquire the mutex when it wakes up.
+ */
+#define CV_WAIT(cv, lck) \
+    do { \
+        int code; \
+        ksleep_prepare(); \
+        MP_SPINLOCK(rx_sleepLock); \
+        if (!b_owns_sema(lck)) \
+            osi_Panic("mutex not held \n"); \
+        b_vsema(lck); \
+        code = ksleep_one(PCATCH | KERNEL_ADDRESS | KERN_SPINLOCK_OBJECT, \
+            (cv), rx_sleepLock, 0); \
+        if (code) { \
+            if (code == EINTR) { /* lock still held */ \
+                MP_SPINUNLOCK(rx_sleepLock); \
+            } else if (code != -EINTR) { \
+                osi_Panic("ksleep_one failed: code = %d \n", code); \
+            } \
+        } \
+        b_psema(lck); /* grab the mutex again */ \
+    } while(0)
 
-typedef sync_t  afs_kmutex_t;
+/* Wakes up a thread waiting on this condition */
+#define CV_SIGNAL(cv) \
+    do { \
+        int wo, code; \
+        MP_SPINLOCK(rx_sleepLock); \
+        if ((code = kwakeup_one(KERNEL_ADDRESS, (cv), WAKEUP_ONE, &wo)) < 0) \
+            osi_Panic("kwakeup_one failed: code = %d \n", code); \
+        MP_SPINUNLOCK(rx_sleepLock); \
+    } while (0)
+
+/* Wakes up all threads waiting on this condition */
+#define CV_BROADCAST(cv) \
+    do { \
+        int wo, code; \
+        MP_SPINLOCK(rx_sleepLock); \
+        if ((code = kwakeup_one(KERNEL_ADDRESS, (cv), WAKEUP_ALL, &wo)) < 0) \
+            osi_Panic("kwakeup_all failed: code = %d \n", code); \
+        MP_SPINUNLOCK(rx_sleepLock); \
+    } while (0)
+
+#define CV_DESTROY(a)
+
+/* We now use beta semaphores for mutexes */
+typedef b_sema_t afs_kmutex_t;
 typedef caddr_t afs_kcondvar_t;
 
-#define RXObtainWriteLock(a) 
+#else /* AFS_HPUX110_ENV */
+
+#if defined(AFS_HPUX102_ENV)
+#define CV_INIT(a,b,c,d)
+#define CV_DESTROY(a)
+#endif /* AFS_HPUX102_ENV */
+#endif /* else AFS_HPUX110_ENV */
+
+#ifdef AFS_HPUX102_ENV
+
+#define RXObtainWriteLock(a) AFS_ASSERT_RXGLOCK()
 #define RXReleaseWriteLock(a)
 
+
+#if defined(AFS_HPUX110_ENV) 
+#undef osirx_AssertMine
+extern void osirx_AssertMine(afs_kmutex_t *lockaddr, char *msg);
+
+#define AFS_RX_ORDER 30
+
+#define MUTEX_INIT(a,b,c,d) b_initsema((a), 1, AFS_RX_ORDER, (b))
+#define MUTEX_DESTROY(a)
+
+#define MUTEX_TRYENTER(a) b_cpsema(a)
+
+#define MUTEX_ENTER(a) \
+    ((b_owns_sema(a)) ? (osi_Panic("Already Held"), 0) : b_psema(a))
+
+#define MUTEX_EXIT(a) \
+    ((b_owns_sema(a)) ? b_vsema(a) : (osi_Panic("mutex not held"), 0))
+
+#undef MUTEX_ISMINE
+#define MUTEX_ISMINE(a) b_owns_sema(a)
+
+#else /* AFS_HPUX110_ENV */
+
+#define osirx_AssertMine(addr, msg)
+
 #define MUTEX_DESTROY(a)
 #define MUTEX_ENTER(a)
 #define MUTEX_TRYENTER(a) 1
 #define MUTEX_EXIT(a)  
 #define MUTEX_INIT(a,b,c,d) 
-/* #define MUTEX_ISMINE(a) */
-#endif
+
+#endif /* else AFS_HPUX110_ENV */
+#endif /* AFS_HPUX102_ENV */
+#endif /* _RX_KMUTEX_H_ */
+
index bd2cac240afb123aba9143fc1d52d6e54d3ed0f5..dce3aeb16182daafea42388b92b8d854218c7a20 100644 (file)
@@ -42,7 +42,7 @@ XDROBJS = xdr.o xdr_array.o xdr_arrayn.o xdr_rx.o xdr_afsuuid.o
 
 RXOBJS = rx_clock.o rx_event.o rx_user.o rx_lwp.o rx.o rx_null.o rx_globals.o \
        rx_getaddr.o rx_misc.o rx_packet.o rx_rdwr.o  rx_trace.o rx_conncache.o \
-       xdr_int64.o 
+       xdr_int64.o xdr_update.o xdr_refernce.o
 
 MULTIOBJS = rx_multi.o
 
@@ -56,7 +56,7 @@ XDROBJS_djgpp = xdr.o xdr_rec.o xdr_stdio.o \
 
 RXOBJS_djgpp = rx_clock.o rx_event.o rx_user.o rx_lwp.o rx.o rx_null.o rx_globals.o \
                rx_getaddr.o rx_misc.o rx_packet.o rx_rdwr.o  rx_trace.o rx_conncache.o \
-               xdr_int64.o rx_xmit_nt.o
+               xdr_int64.o xdr_update.o xdr_refernce.o rx_xmit_nt.o
 
 BASICINCLS=${TOP_INCDIR}/lwp.h ${TOP_INCDIR}/lock.h \
             rx_clock.h rx_queue.h rx_event.h
index 6c40a2820b85c7b91543be5a3c701abc5946ff97..fbc32cb97ba63fd2b66795aabf29168eb7747163 100644 (file)
 #include <afsconfig.h>
 #include "../afs/param.h"
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_kcommon.c,v 1.1.1.13 2002/09/26 19:07:36 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_kcommon.c,v 1.1.1.14 2002/12/11 02:44:30 hartmans Exp $");
 
 #include "../rx/rx_kcommon.h"
 
 #ifdef AFS_HPUX110_ENV
 #include "../h/tihdr.h"
 #include <xti.h>
-#include "../afs/hpux_110.h"
 #endif
 #include "../afsint/afsint.h"
 
index 271d1058d8831719d6cf475a014450ef902e6b3a..4ac04c2c470dee286f59d9efc69438a792ae1a8f 100644 (file)
@@ -37,7 +37,9 @@ typedef unsigned short                  etap_event_t;
 #include "../h/protosw.h"
 #if !defined(AFS_SUN5_ENV) && !defined(AFS_XBSD_ENV)
 #include "../h/domain.h"
+#if !defined(AFS_HPUX110_ENV)
 #include "../h/dir.h"
+#endif
 #include "../h/buf.h"
 #include "../h/mbuf.h"
 #else
index bb267c7fe302a30ae643a208c8cbc1b760dd97c7..ff8cb1b45974bbc70f5b72e19e3069141e14e984 100644 (file)
@@ -30,7 +30,7 @@ typedef struct socket *osi_socket;
 
 extern osi_socket rxi_GetUDPSocket();
 
-#if (!defined(AFS_GLOBAL_SUNLOCK) && !defined(RX_ENABLE_LOCKS)) || (defined(AFS_HPUX_ENV) && !defined(RX_ENABLE_LOCKS))
+#if (!defined(AFS_GLOBAL_SUNLOCK) && !defined(RX_ENABLE_LOCKS))
 #define        osi_rxSleep(a)  afs_osi_Sleep(a)
 #define        osi_rxWakeup(a) afs_osi_Wakeup(a)
 #endif
index 68697450981e0079acf54bcbf1e1058cf5fea84e..5f899ac4afafd5806c880b9710dd0579cc46d36f 100644 (file)
@@ -171,14 +171,14 @@ typedef   bool_t (*xdrproc_t)();
 typedef struct {
        enum xdr_op     x_op;           /* operation; fast additional param */
        struct xdr_ops {
-#if defined(AFS_SGI61_ENV) && defined(KERNEL) && (_MIPS_SZLONG != _MIPS_SZINT)
+#if defined(KERNEL) && ((defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV))
 /* NOTE: SGI 6.1 adds two routines to the xdr_ops if the size of a long is
  * 64 bits. I've only done this for the kernel, since other changes may
  * be necessary if we make a 64 bit user version of AFS.
  */
                bool_t  (*x_getint64)(); /* get 32 bits into a long */
                bool_t  (*x_putint64)(); /* send 32 bits of a long */
-#endif /* AFS_SGI61_ENV */
+#endif /* defined(KERNEL) && ((defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV)) */
 #if !(defined(KERNEL) && defined(AFS_SUN57_ENV))
                bool_t  (*x_getint32)();        /* get an afs_int32 from underlying stream */
                bool_t  (*x_putint32)();        /* put an afs_int32 to " */
@@ -210,7 +210,7 @@ typedef struct {
  * u_int        len;
  * u_int        pos;
  */
-#if defined(AFS_SGI61_ENV) && defined(KERNEL) && (_MIPS_SZLONG != _MIPS_SZINT)
+#if defined(AFS_SGI61_ENV) && defined(KERNEL) && (_MIPS_SZLONG != _MIPS_SZINT) || defined(AFS_HPUX_64BIT_ENV)
 #define XDR_GETINT64(xdrs, int64p)                     \
        (*(xdrs)->x_ops->x_getint64)(xdrs, int64p)
 #define xdr_getint64(xdrs, int64p)                     \
@@ -220,7 +220,7 @@ typedef struct {
        (*(xdrs)->x_ops->x_putint64)(xdrs, int64p)
 #define xdr_putint64(xdrs, int64p)                     \
        (*(xdrs)->x_ops->x_putint64)(xdrs, int64p)
-#endif /* defined(AFS_SGI61_ENV) && KERNEL && (_MIPS_SZLONG != _MIPS_SZINT) */
+#endif /* defined(KERNEL) && ((defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV)) */
 
 #define XDR_GETINT32(xdrs, int32p)                     \
        (*(xdrs)->x_ops->x_getint32)(xdrs, int32p)
index 56682216dff6163250539cfa09baa091b2e5fa60..75c4747d358536ff86f6f56d93c354ff0759f002 100644 (file)
@@ -18,7 +18,7 @@
 #endif
 #include <afsconfig.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/xdr_rx.c,v 1.1.1.5 2002/06/10 11:47:16 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/xdr_rx.c,v 1.1.1.6 2002/12/11 02:44:36 hartmans Exp $");
 
 #ifdef KERNEL
 #ifndef UKERNEL
@@ -102,11 +102,11 @@ void              xdrrx_destroy();
  * Ops vector for stdio type XDR
  */
 static struct xdr_ops  xdrrx_ops = {
-#if (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV)
+#if defined(KERNEL) && ((defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV))
        xdrrx_getint64,
        xdrrx_putint64,
-#endif /* (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV) */
-#if !(defined(KERNEL) && defined(AFS_SUN57_ENV)) && !defined(AFS_HPUX_64BIT_ENV)
+#endif /* defined(KERNEL) && ((defined(AFS_SGI61_ENV) && (_MIPS_SZLONG != _MIPS_SZINT)) || defined(AFS_HPUX_64BIT_ENV)) */
+#if !(defined(KERNEL) && defined(AFS_SUN57_ENV)) 
        xdrrx_getint32, /* deserialize an afs_int32 */
        xdrrx_putint32, /* serialize an afs_int32 */
 #endif
index c97851225ec674b644808874c0d2adf77416b5f0..543e4adc7700d699892d72ced5f53a849effcfa6 100644 (file)
@@ -33,12 +33,12 @@ KERNELDIR = ../libafs/
 UKERNELDIR = ../libuafs/
 COMPILE_ET=${TOP_SRCDIR}/comerr/compile_et
 
-CFLAGS=${OPTMZ} -I${TOP_SRCDIR}/config -I${TOP_INCDIR} ${XCFLAGS}
+CFLAGS=${OPTMZ} -I${TOP_SRCDIR}/config -I${TOP_INCDIR} -I. ${XCFLAGS}
 INCLS=${TOP_INCDIR}/rx/rx.h ${TOP_INCDIR}/rx/xdr.h \
-       rxkad.h
+       rxkad.h v5gen.h
 
 OBJS=rxkad_client.o rxkad_server.o rxkad_common.o ticket.o rxkad_errs.o \
-       fcrypt.o crypt_conn.o
+       fcrypt.o crypt_conn.o ticket.o ticket5.o crc.o
 
 fc_test_OBJS=fc_test.o
 
@@ -184,6 +184,10 @@ rxkad_errs.c rxkad.h: rxkad_errs.et rxkad.p.h
 
 ticket.o: ticket.c lifetimes.h ${INCLS}
 
+ticket5.o: ticket5.c v5gen.c v5der.c v5gen-rewrite.h ${INCLS}
+
+crc.o: crc.c ${INCLS}
+
 fcrypt.o: fcrypt.c fcrypt.h sboxes.h rxkad.h
        ${CC} ${CFLAGS} -c fcrypt.c
 
index fc71d72ebd79d4f49de27f6fac96c6cd8f47fd6d..8a5f8d443e46dbc02e4a7394b033b21bc2072d70 100644 (file)
@@ -23,6 +23,8 @@ LIBOBJS =\
        rxkad_errs.obj \
        AFS_component_version_number.obj \
        fcrypt.obj \
+       crc.obj \
+       ticket5.obj \
        crypt_conn.obj 
 
 # afsrxkad.lib
index 8c876dbc206177639e3cf58f21f06c369f0fdf72..2cd432557e70b6eba49f29fbaaee7eeebeb3b0f2 100644 (file)
@@ -36,6 +36,9 @@
  * passed to/from ktc_[SG]etToken.
  */
 #define RXKAD_TKT_TYPE_KERBEROS_V5             256
+#define RXKAD_TKT_TYPE_KERBEROS_V5_ENCPART_ONLY        213
+
+#define MAXKRB5TICKETLEN                       1024
 
 /*
  * The AFS/DFS translator may also make use of additional ticket types in
index 1377b1cc3cd4e5e2b7655821931975a341ee6c62..c30c8360f9fc804ef0f26ef81dfd8f784f3ad290 100644 (file)
@@ -14,7 +14,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_server.c,v 1.1.1.9 2001/10/14 18:06:36 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_server.c,v 1.1.1.10 2002/12/11 02:44:47 hartmans Exp $");
 
 #include <afs/stds.h>
 #include <sys/types.h>
@@ -304,6 +304,23 @@ rxs_return_t rxkad_CheckResponse (aobj, aconn, apacket)
      * If the alternate decoder is not present, or returns -1, then
      * assume the ticket is of the default style.
      */
+    if (code == -1 && 
+       (kvno == RXKAD_TKT_TYPE_KERBEROS_V5) ||
+       (kvno == RXKAD_TKT_TYPE_KERBEROS_V5_ENCPART_ONLY)) 
+    {
+       code = tkt_DecodeTicket5 (tix, tlen, 
+                                 tsp->get_key,
+                                 tsp->get_key_rock,
+                                 kvno,
+                                 client.name, client.instance, client.cell,
+                                 &sessionkey, &host, &start, &end);
+       if (code) return RXKADBADTICKET;
+    }
+
+    /*
+     * If the alternate decoder/kerberos 5 decoder is not present, or
+     * returns -1, then assume the ticket is of the default style.
+     */
     if (code == -1) {
        /* get ticket's key */
        code = (*tsp->get_key)(tsp->get_key_rock, kvno, &serverKey);
index e7a0c457644ecb7b9c7587789fe7096271c8e607..cea77cecf763ed72f6d5002150f95b79f5171ec7 100644 (file)
@@ -5,21 +5,42 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-DESTDIR=@DESTDIR@
-SRCDIR=@SRCDIR@
+DEST=@DEST@
+TOP_INCDIR=@TOP_INCDIR@
+TOP_LIBDIR=@TOP_LIBDIR@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+libexecdir=@libexecdir@
+libdir=@libdir@
+includedir=@includedir@
+mandir=@mandir@
+afssrvbindir=@afssrvbindir@
+afssrvsbindir=@afssrvsbindir@
+afssrvlibexecdir=@afssrvlibexecdir@
+RXGEN=${TOP_SRCDIR}/rxgen/rxgen
 TOP_SRCDIR=@TOP_SRCDIR@
 SYS_NAME=@AFS_SYSNAME@
 
+SHELL = /bin/sh
+
 include ../../config/Makefile.${SYS_NAME}
 
+KERNELDIR = ../libafs/
+UKERNELDIR = ../libuafs/
+COMPILE_ET=${TOP_SRCDIR}/comerr/compile_et
+
 OPTIMIZE=-g
 
-CFLAGS=-g -I. -I${srcdir} -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} ${XCFLAGS}
+CFLAGS=-g -I. -I${TOP_SRCDIR} -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} ${XCFLAGS}
 
 HEADERS = ../rxkad.h stress.h stress_internal.h stress_errs.h
 
-LIBS=${TOP_LIBDIR}/librx.a \
+LIBS=${TOP_LIBDIR}/libauth.a \
+       ${TOP_LIBDIR}/librx.a \
        ${TOP_LIBDIR}/liblwp.a \
+       ${TOP_LIBDIR}/libsys.a \
        ${TOP_LIBDIR}/libcmd.a \
        ${TOP_LIBDIR}/librxkad.a \
        ${TOP_LIBDIR}/libdes.a \
@@ -50,7 +71,7 @@ th_stress.ss.o: stress.ss.c
 
 th_stress.cs.o: stress.cs.c
        ${THRULE} -o th_stress.cs.o
-       
+
 th_stress.xdr.o: stress.xdr.c stress.h
        ${THRULE} -o th_stress.xdr.o
 
index 8d2e9411d71873b1aca5f13a0ca7666365ec6fa8..369db2a830998658a980b9ee58d2bccd96c4597f 100644 (file)
@@ -12,7 +12,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress.c,v 1.1.1.7 2001/10/14 18:06:37 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress.c,v 1.1.1.8 2002/12/11 02:44:48 hartmans Exp $");
 
 #include <afs/stds.h>
 #include <sys/types.h>
@@ -89,6 +89,9 @@ static int StringToAuth (authname)
 #define aRECLAIM     21
 #define a2DCHOICE     22
 #define aMAXSKEW       23
+#define aUSETOKENS 24
+#define aCELL 25
+#define aKEYFILE 26
 
 static int CommandProc (as, arock)
   char *arock;
@@ -122,6 +125,7 @@ static int CommandProc (as, arock)
     cParms->callTest = (as->parms[aCALLTEST].items != 0);
     cParms->hijackTest = (as->parms[aHIJACKTEST].items != 0);
     cParms->stopServer = (as->parms[aSTOPSERVER].items != 0);
+    cParms->useTokens = (as->parms[aUSETOKENS].items != 0);
 
     if (as->parms[aMELT1b].items) 
        meltdown_1pkt = 0; 
@@ -151,6 +155,8 @@ static int CommandProc (as, arock)
        if (as->parms[aMINSERVERAUTH].items)
            sParms->authentication =
                StringToAuth (as->parms[aMINSERVERAUTH].items->data);
+        if (as->parms[aKEYFILE].items)
+            sParms->keyfile = as->parms[aKEYFILE].items->data;
 
 #ifdef AFS_PTHREAD_ENV
        {
@@ -231,6 +237,9 @@ static int CommandProc (as, arock)
        if (as->parms[aAUTHENTICATION].items)
            cParms->authentication =
                StringToAuth (as->parms[aAUTHENTICATION].items->data);
+        cParms->cell = RXKST_CLIENT_CELL;
+        if (as->parms[aCELL].items)
+            cParms->cell = as->parms[aCELL].items->data;
 
        code = rxkst_StartClient (cParms);
        if (code) {
@@ -268,6 +277,7 @@ void main (argc, argv)
     initialize_RXK_error_table();
     initialize_RKS_error_table();
     initialize_CMD_error_table();
+    initialize_KTC_error_table();
 
     code = rx_Init (0);
     rx_SetRxDeadTime(120);
@@ -308,6 +318,9 @@ void main (argc, argv)
     cmd_AddParm (ts, "-noreclaim", CMD_FLAG, CMD_OPTIONAL, "dont aggressively reclaim packets");
     cmd_AddParm (ts, "-no2dchoice", CMD_FLAG, CMD_OPTIONAL, "disable rx_getcall 2d choice code");
     cmd_AddParm (ts, "-maxskew", CMD_SINGLE, CMD_OPTIONAL, "max client server skew in seconds");
+    cmd_AddParm (ts, "-usetokens", CMD_FLAG, CMD_OPTIONAL, "use ktc tokens");
+    cmd_AddParm (ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "name of test cell");
+    cmd_AddParm (ts, "-keyfile", CMD_SINGLE, CMD_OPTIONAL, "read server key from file");
 
     code = cmd_Dispatch (argc, argv);
     exit (code!=0);
index a27bf57edc09ace16c96cab404f2c329eca216b5..c67f083bddace351e2a36b5c1b8825a4067c4527 100644 (file)
@@ -12,7 +12,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_c.c,v 1.1.1.6 2001/09/11 14:34:44 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_c.c,v 1.1.1.7 2002/12/11 02:44:49 hartmans Exp $");
 
 #include <afs/stds.h>
 #include <sys/types.h>
@@ -26,6 +26,7 @@ RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_c.c,v 1.1.1.6 2001/09
 #include <afs/com_err.h>
 #include <afs/afsutil.h>
 #include <rx/rxkad.h>
+#include <afs/auth.h>
 #include "stress.h"
 #include "stress_internal.h"
 #ifdef AFS_PTHREAD_ENV
@@ -52,7 +53,30 @@ static long GetServer(aname)
     return addr;
 }
 
-static long GetTicket (versionP, session, ticketLenP, ticket)
+static long GetToken (versionP, session, ticketLenP, ticket, cell)
+  OUT long *versionP;
+  OUT struct ktc_encryptionKey *session;
+  OUT int *ticketLenP;
+  OUT char *ticket;
+{
+  struct ktc_principal sname;
+  struct ktc_token ttoken;
+    long code;
+
+  strcpy(sname.cell, cell);
+  sname.instance[0] = 0;
+  strcpy(sname.name, "afs");
+  code = ktc_GetToken(&sname, &ttoken, sizeof(ttoken), NULL);
+  if (code) return code;
+
+  *versionP = ttoken.kvno;
+  *ticketLenP = ttoken.ticketLen;
+  memcpy(ticket, ttoken.ticket, ttoken.ticketLen);
+  memcpy(session, &ttoken.sessionKey, sizeof(struct ktc_encryptionKey));
+  return 0;
+}
+
+static long GetTicket (versionP, session, ticketLenP, ticket, cell)
   OUT long *versionP;
   OUT struct ktc_encryptionKey *session;
   OUT int *ticketLenP;
@@ -68,7 +92,7 @@ static long GetTicket (versionP, session, ticketLenP, ticket)
     /* now create the actual ticket */
     *ticketLenP = 0;
     code = tkt_MakeTicket(ticket, ticketLenP, &serviceKey,
-                         RXKST_CLIENT_NAME, RXKST_CLIENT_INST, "",
+                         RXKST_CLIENT_NAME, RXKST_CLIENT_INST, cell,
                          /*start,end*/0, 0xffffffff, session, /*host*/0,
                          RXKST_SERVER_NAME, RXKST_SERVER_NAME);
     /* parms were buffer, ticketlen, key to seal ticket with, principal name,
@@ -1142,7 +1166,10 @@ long rxkst_StartClient (parms)
        int ticketLen;
        struct ktc_encryptionKey Ksession;
 
-       code = GetTicket (&kvno, &Ksession, &ticketLen, ticket);
+       if (parms->useTokens)
+           code = GetToken (&kvno, &Ksession, &ticketLen, ticket, parms->cell);
+       else
+           code = GetTicket (&kvno, &Ksession, &ticketLen, ticket, parms->cell);
        if (code) return code;
 
        /* next, we have ticket, kvno and session key, authenticate the conn */
index efc53947193711d596e86603c85cd68d20847645..61d390549a3b8b803ca1e4dfd671fd91e049ac9d 100644 (file)
@@ -19,6 +19,7 @@ extern long serviceKeyVersion;
 #define RXKST_SERVER_INST ""
 #define RXKST_CLIENT_NAME "rxkad_stress_test_client"
 #define RXKST_CLIENT_INST ""
+#define RXKST_CLIENT_CELL "rxtest.openafs.org"
 
 extern int errno;
 
@@ -26,6 +27,7 @@ struct serverParms {
     char *whoami;
     u_int threads;
     int authentication;                        /* minimum level  of auth to permit */
+    char *keyfile;
 };
 
 struct clientParms {
@@ -44,6 +46,8 @@ struct clientParms {
     int hijackTest;                    /* check hijack prevention measures */
     int stopServer;                    /* send stop server RPC */
     int authentication;                        /* type of authentication to use */
+    int useTokens;                     /* use user's existing tokens */
+    char *cell;                         /* test cell name */
     u_long repeatInterval;             /* secs between load test activity */
     u_long repeatCount;                        /* times load test activity repeated */
 };
@@ -51,11 +55,6 @@ struct clientParms {
 long rxkst_StartClient(INOUT struct clientParms *parms);
 long rxkst_StartServer(INOUT struct serverParms *parms);
 
-long RXKST_Fast();
-long RXKST_Slow();
-long RXKST_Copious();
-long RXKST_Kill();
-
 /* For backward compatibility with AFS3.0 release. */
 
 #ifndef assert
index 81512fe43ed254ad4477add14d7333044e6483b4..ac86613f7ca1d0419138802412fa5330650d6f6e 100644 (file)
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_s.c,v 1.1.1.5 2001/09/11 14:34:45 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_s.c,v 1.1.1.6 2002/12/11 02:44:49 hartmans Exp $");
 
 #include <afs/stds.h>
 #include <stdio.h>
+#include <fcntl.h>
 #include <sys/types.h>
 #ifdef AFS_NT40_ENV
 #include <winsock2.h>
@@ -26,6 +27,9 @@ RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress_s.c,v 1.1.1.5 2001/09
 
 #include <rx/rxkad.h>
 
+#include <afs/keys.h>
+#include <afs/cellconfig.h>
+
 #include "stress.h"
 #include "stress_internal.h"
 
@@ -41,8 +45,38 @@ static long GetKey (rock, kvno, key)
   IN long  kvno;
   OUT struct ktc_encryptionKey *key;
 {
-    memcpy(key, &serviceKey, sizeof(*key));
-    return 0;
+    struct serverParms *parms = (struct serverParms *)rock;
+    struct afsconf_keys tstr;
+    afs_int32 code;
+    int fd;
+
+    fprintf(stderr, "GetKey called for kvno %d\n", kvno);
+    if (!parms->keyfile) {
+        memcpy(key, &serviceKey, sizeof(*key));
+        return 0;
+    }
+
+    /* the rest of this function borrows heavily from auth/cellconfig.c */
+    fd = open(parms->keyfile, O_RDONLY);
+    if (fd < 0) {
+        return AFSCONF_FAILURE;
+    }
+    code = read(fd, &tstr, sizeof(struct afsconf_keys));
+    close(fd);
+    if (code < sizeof(afs_int32)) {
+        return AFSCONF_FAILURE;
+    }
+
+    /* convert key structure to host order */
+    tstr.nkeys = ntohl(tstr.nkeys);
+    for(fd = 0; fd < tstr.nkeys; fd++) {
+        if (kvno == ntohl(tstr.key[fd].kvno)) {
+            memcpy(key, tstr.key[fd].key, sizeof(*key));
+            return 0;
+        }
+    }
+
+    return AFSCONF_NOTFOUND;
 }
 
 static int minAuth;
@@ -61,7 +95,7 @@ long rxkst_StartServer (parms)
 
     sc[0] = rxnull_NewServerSecurityObject();
     sc[1] = 0;                         /* no rxvab anymore */
-    sc[2] = rxkad_NewServerSecurityObject (minLevel, 0, GetKey, 0);
+    sc[2] = rxkad_NewServerSecurityObject (minLevel, (void *)parms, GetKey, 0);
     tservice = rx_NewService(htons(RXKST_SERVICEPORT), RXKST_SERVICEID,
                             "stress test", sc, 3, RXKST_ExecuteRequest);
     if (tservice == (struct rx_service *)0) {
@@ -77,6 +111,10 @@ long rxkst_StartServer (parms)
     return 0;
 }
 
+static char test_client_name[MAXKTCNAMELEN];
+static char test_client_inst[MAXKTCNAMELEN];
+static char test_client_cell[MAXKTCREALMLEN];
+static int got_client_id = 0;
 static long CheckAuth (call)
   IN struct rx_call *call;
 {
@@ -105,16 +143,23 @@ static long CheckAuth (call)
                                name, inst, cell, &kvno);
     if (code) return code;
     if (minAuth > level) return -1;
-    if (kvno != serviceKeyVersion) return RXKST_BADKVNO;
-    if (strcmp (name, RXKST_CLIENT_NAME) ||
-       strcmp (inst, RXKST_CLIENT_INST) ||
-       cell[0]) return RXKST_BADCLIENT;
+    fprintf(stderr, "Test client is %s.%s@%s\n", name, inst, cell);
+    if (got_client_id) {
+        if (strcmp(name, test_client_name)) return RXKST_BADCLIENT;
+        if (strcmp(inst, test_client_inst)) return RXKST_BADCLIENT;
+        if (strcmp(cell, test_client_cell)) return RXKST_BADCLIENT;
+    } else {
+        strcpy(test_client_name, name);
+        strcpy(test_client_inst, inst);
+        strcpy(test_client_cell, cell);
+        got_client_id = 1;
+    }
     return 0;
 }
 
 /* Stop the server.  There isn't a graceful way to do this so just exit. */
 
-long SRXKST_Kill (call)
+afs_int32 SRXKST_Kill (call)
   IN struct rx_call *call;
 {
     long code;
@@ -131,7 +176,7 @@ long SRXKST_Kill (call)
     return 0;    
 }
 
-long SRXKST_Fast (call, n, inc_nP)
+afs_int32 SRXKST_Fast (call, n, inc_nP)
   IN struct rx_call *call;
   IN u_long n;
   OUT u_long *inc_nP;
@@ -140,7 +185,7 @@ long SRXKST_Fast (call, n, inc_nP)
     return 0;
 }
 
-long SRXKST_Slow (call, tag, nowP)
+afs_int32 SRXKST_Slow (call, tag, nowP)
   IN struct rx_call *call;
   IN u_long tag;
   OUT u_long *nowP;
@@ -184,7 +229,7 @@ static void PutBuffer(b)
     buflist = bl;
 }
 
-long SRXKST_Copious (call, inlen, insum, outlen, outsum)
+afs_int32 SRXKST_Copious (call, inlen, insum, outlen, outsum)
   IN struct rx_call *call;
   IN u_long inlen;
   IN u_long insum;
index d8f766b7e9120b12b7b9fd5e53f5f5ab95fd2fe5..f79182c49a398d291afc4e75c14cfce68305363c 100644 (file)
@@ -77,6 +77,9 @@
        afs_krb_get_lrealm;
        pr_NameToId;
        pr_IdToName;
+       pr_SNameToId;
+       afs_get_pag_from_groups;
+       setpag;
 
     local:
        *;
index df0e6d341284ffb28d05ddb7daf1adf9eb00a9d5..626a82458eee185fc924a4af0f2cbc641a8ab75f 100644 (file)
@@ -102,6 +102,8 @@ RXKADOBJS =\
        rxkad_server.o \
        rxkad_common.o \
        ticket.o \
+       ticket5.o \
+       crc.o \
        fcrypt.o \
        crypt_conn.o
 
@@ -207,6 +209,12 @@ rxkad_common.o: ${RXKAD}/rxkad_common.c
 ticket.o: ${RXKAD}/ticket.c
        ${CCRULE}
 
+ticket5.o: ${RXKAD}/ticket5.c
+       ${CCRULE}
+
+crc.o: ${RXKAD}/crc.c
+       ${CCRULE}
+
 fcrypt.o: ${RXKAD}/fcrypt.c
        ${CCRULE}
 
@@ -268,7 +276,7 @@ xdr_afsuuid.o: ${RX}/xdr_afsuuid.c
 #
 #   $ what /opt/langtools/bin/pxdb32
 #   /opt/langtools/bin/pxdb32:
-#           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.1 $
+#           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.1.1.2 $
 #
 # The problem occurs when -g and -O are both used when compiling des.c.
 # The simplest way to work around the problem is to leave out either -g or -O.
index b63d62a3b8686adcecd83a18f5d611664c556097..fcf2ac42f53d7bcd8ac64e673df6909514f0ea19 100644 (file)
@@ -10,7 +10,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/afs_lhash.c,v 1.1.1.4 2001/07/14 22:24:18 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/afs_lhash.c,v 1.1.1.5 2002/12/11 02:45:51 hartmans Exp $");
 
 #ifdef KERNEL
 #include "../afs/afs_atomlist.h"
@@ -23,6 +23,10 @@ RCSID("$Header: /tmp/cvstemp/openafs/src/util/afs_lhash.c,v 1.1.1.4 2001/07/14 2
 #define CHECK_INVARIANTS
 #endif /* KERNEL */
 
+#ifndef NULL
+#define NULL 0
+#endif
+
 /* max hash table load factor */
 enum { LOAD_FACTOR = 5 };
 
index 246c5eedec67fa7d20073d14c8240564bf9b4e66..679166315fd7ca80efad5b44c348fd25c4684e7c 100644 (file)
@@ -82,7 +82,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/viced/callback.c,v 1.1.1.9 2002/09/26 19:09:13 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/viced/callback.c,v 1.1.1.10 2002/12/11 02:46:08 hartmans Exp $");
 
 #include <stdio.h> 
 #include <stdlib.h>      /* for malloc() */
@@ -1791,9 +1791,9 @@ struct host*              host;
 struct AFSCBFids*      afidp;
 {
        int i,j;
-       struct rx_connection*   conns[AFS_MAX_INTERFACE_ADDR];
+       struct rx_connection**  conns;
        struct rx_connection*   connSuccess = 0;
-       afs_int32                       addr[AFS_MAX_INTERFACE_ADDR];
+       afs_int32               *addr;
        static struct rx_securityClass *sc = 0;
        static struct AFSCBs tc = {0,0};
 
@@ -1810,6 +1810,10 @@ struct AFSCBFids*        afidp;
        if ( !sc )
            sc = (struct rx_securityClass *) rxnull_NewClientSecurityObject();
 
+       i = host->interface->numberOfInterfaces;
+       addr = malloc(i * sizeof(afs_int32));
+       conns = malloc(i * sizeof(struct rx_connection *));
+
        /* initialize alternate rx connections */
        for ( i=0,j=0; i < host->interface->numberOfInterfaces; i++)
        {
@@ -1856,6 +1860,9 @@ struct AFSCBFids* afidp;
                if ( conns[i] != connSuccess )
                        rx_DestroyConnection(conns[i] );
 
+       free(addr);
+       free(conns);
+
        if ( connSuccess ) return 0;    /* success */
                else return 1;          /* failure */
 }
@@ -1870,9 +1877,9 @@ MultiProbeAlternateAddress_r(host)
 struct host*           host;
 {
        int i,j;
-       struct rx_connection*   conns[AFS_MAX_INTERFACE_ADDR];
+       struct rx_connection**  conns;
        struct rx_connection*   connSuccess = 0;
-       afs_int32                       addr[AFS_MAX_INTERFACE_ADDR];
+       afs_int32               *addr;
        static struct rx_securityClass *sc = 0;
 
        /* nothing more can be done */
@@ -1888,6 +1895,10 @@ struct host*             host;
        if ( !sc )
            sc = (struct rx_securityClass *) rxnull_NewClientSecurityObject();
 
+       i = host->interface->numberOfInterfaces;
+       addr = malloc(i * sizeof(afs_int32));
+       conns = malloc(i * sizeof(struct rx_connection *));
+
        /* initialize alternate rx connections */
        for ( i=0,j=0; i < host->interface->numberOfInterfaces; i++)
        {
@@ -1934,6 +1945,9 @@ struct host*              host;
                if ( conns[i] != connSuccess )
                        rx_DestroyConnection(conns[i] );
 
+       free(addr);
+       free(conns);
+
        if ( connSuccess ) return 0;    /* success */
                else return 1;          /* failure */
 }
index 610a516c1ff2cdd0e4ec19a74ab540597de9f576..7f0babb2586f00b7a16c76d7d3264446fd4271c9 100644 (file)
@@ -10,7 +10,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/viced/host.c,v 1.1.1.11 2002/09/26 19:09:14 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/viced/host.c,v 1.1.1.12 2002/12/11 02:46:09 hartmans Exp $");
 
 #include <stdio.h>
 #include <errno.h>
@@ -956,7 +956,6 @@ struct host *h_GetHost_r(tcon)
     int held;
     struct interfaceAddr interf;
     int interfValid = 0;
-    afs_int32  buffer[AFS_MAX_INTERFACE_ADDR];
     struct Identity *identP = NULL;
     afs_int32 haddr;
     afs_int32 hport;
@@ -1934,7 +1933,6 @@ int CheckHost(host, held)
 
 {
     register struct client *client;
-    struct interfaceAddr interf;
     int code;
 
     /* Host is held by h_Enumerate */
@@ -2070,11 +2068,11 @@ struct interfaceAddr *interf;
                host->host, interf->numberOfInterfaces));
 
        number = interf->numberOfInterfaces;
-       myPort   = host->port;
-       myHost   = host->host; /* current interface address */
+       myPort = host->port;
+       myHost = host->host; /* current interface address */
 
        /* validation checks */
-       if ( number < 0 )
+       if ( number < 0 || number > AFS_MAX_INTERFACE_ADDR )
         {
                ViceLog(0,("Number of alternate addresses returned is %d\n",
                         number));
index 38704367e0bca64bea90419960a26edeeca592a0..6d8b422cabf19370afe54f4715b13d5205c5697c 100644 (file)
@@ -38,7 +38,7 @@ static int newVLDB = 1;
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/fssync.c,v 1.1.1.7 2002/09/26 19:09:21 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/fssync.c,v 1.1.1.8 2002/12/11 02:46:15 hartmans Exp $");
 
 #include <sys/types.h>
 #include <stdio.h>
index a7a8b6f078e41e7e367f2eeb24fb9919253cb8ff..9a38dea5f9575e4500f22215e2d34e47794ebd0d 100644 (file)
@@ -14,7 +14,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/ihandle.c,v 1.1.1.7 2002/06/10 11:48:24 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/ihandle.c,v 1.1.1.8 2002/12/11 02:46:15 hartmans Exp $");
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -257,6 +257,9 @@ FdHandle_t *ih_open(IHandle_t *ihP)
     FD_t fd;
     FD_t closeFd;
 
+    if (!ihP) /* XXX should log here in the fileserver */
+       return NULL;
+
     IH_LOCK
 
     /* Do we already have an open file handle for this Inode? */
index 4787a11f6da2b5fedd6e03b977a4174e8cd65d6c..bde41248e13b76b7d8e112263a4470534121eaa8 100644 (file)
@@ -19,7 +19,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/volume.c,v 1.1.1.12 2002/09/26 19:09:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/volume.c,v 1.1.1.13 2002/12/11 02:46:19 hartmans Exp $");
 
 #include <rx/xdr.h>
 #include <afs/afsint.h>
@@ -388,6 +388,11 @@ static void ReadHeader(Error *ec, IHandle_t *h, char *to, int size,
     FdHandle_t *fdP;
 
     *ec = 0;
+    if (h == NULL) {
+       *ec = VSALVAGE;
+       return;
+    }
+
     fdP = IH_OPEN(h);
     if (fdP == NULL) {
        *ec = VSALVAGE;