diff options
author | hobbs <hobbs> | 1999-10-29 03:05:12 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 1999-10-29 03:05:12 (GMT) |
commit | aef40e6197cea8075214bd63641880e5823e2800 (patch) | |
tree | 0fff069ac01ec5fa93c3f571fb3a79bf9666c555 | |
parent | 3160b5cc1bc35f5b483515bcb9956834055230af (diff) | |
download | tcl-aef40e6197cea8075214bd63641880e5823e2800.zip tcl-aef40e6197cea8075214bd63641880e5823e2800.tar.gz tcl-aef40e6197cea8075214bd63641880e5823e2800.tar.bz2 |
* win/tclWinTest.c: added testvolumetype command, as atime is
completely ignored for Windows FAT file systems
* win/tclWinPort.h: added sys/utime.h to includes
-rw-r--r-- | win/makefile.vc | 10 | ||||
-rw-r--r-- | win/tclWinPort.h | 3 | ||||
-rw-r--r-- | win/tclWinTest.c | 69 |
3 files changed, 72 insertions, 10 deletions
diff --git a/win/makefile.vc b/win/makefile.vc index f14fdcc..00d7c8b 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -6,7 +6,7 @@ # Copyright (c) 1995-1996 Sun Microsystems, Inc. # Copyright (c) 1998-1999 by Scriptics Corporation. # -# RCS: @(#) $Id: makefile.vc,v 1.44 1999/10/05 22:47:05 hobbs Exp $ +# RCS: @(#) $Id: makefile.vc,v 1.45 1999/10/29 03:05:12 hobbs Exp $ # Does not depend on the presence of any environment variables in # order to compile tcl; all needed information is derived from @@ -35,11 +35,11 @@ # ROOT = .. -TOOLS32 = c:\program files\devstudio\vc -TOOLS32_rc = c:\program files\devstudio\sharedide +TOOLS32 = c:\Progra~1\devstudio\vc +TOOLS32_rc = c:\Progra~1\devstudio\sharedide TOOLS16 = c:\msvc -INSTALLDIR = c:\program files\Tcl +INSTALLDIR = c:\Progra~1\Tcl # Set this to the appropriate value of /MACHINE: for your platform MACHINE = IX86 @@ -48,7 +48,7 @@ MACHINE = IX86 #THREADDEFINES = -DTCL_THREADS=1 # Set NODEBUG to 0 to compile with symbols -NODEBUG = 1 +NODEBUG = 0 # The following defines can be used to control the amount of debugging # code that is added to the compilation. diff --git a/win/tclWinPort.h b/win/tclWinPort.h index 1f0e46d..2d171b1 100644 --- a/win/tclWinPort.h +++ b/win/tclWinPort.h @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinPort.h,v 1.10 1999/07/22 21:50:57 redman Exp $ + * RCS: @(#) $Id: tclWinPort.h,v 1.11 1999/10/29 03:05:13 hobbs Exp $ */ #ifndef _TCLWINPORT @@ -61,6 +61,7 @@ typedef float *TCHAR; #ifndef __MWERKS__ #include <sys/stat.h> #include <sys/timeb.h> +#include <sys/utime.h> #endif #include <tchar.h> diff --git a/win/tclWinTest.c b/win/tclWinTest.c index 826355f..07f198b 100644 --- a/win/tclWinTest.c +++ b/win/tclWinTest.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWinTest.c,v 1.3 1999/04/16 00:48:10 stanton Exp $ + * RCS: @(#) $Id: tclWinTest.c,v 1.4 1999/10/29 03:05:13 hobbs Exp $ */ #include "tclWinInt.h" @@ -16,9 +16,12 @@ /* * Forward declarations of procedures defined later in this file: */ -int TclplatformtestInit _ANSI_ARGS_((Tcl_Interp *interp)); -static int TesteventloopCmd _ANSI_ARGS_((ClientData dummy, - Tcl_Interp *interp, int argc, char **argv)); +int TclplatformtestInit _ANSI_ARGS_((Tcl_Interp *interp)); +static int TesteventloopCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int argc, char **argv)); +static int TestvolumetypeCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); /* *---------------------------------------------------------------------- @@ -47,6 +50,8 @@ TclplatformtestInit(interp) Tcl_CreateCommand(interp, "testeventloop", TesteventloopCmd, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); + Tcl_CreateObjCommand(interp, "testvolumetype", TestvolumetypeCmd, + (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); return TCL_OK; } @@ -127,3 +132,59 @@ TesteventloopCmd(clientData, interp, argc, argv) } return TCL_OK; } + +/* + *---------------------------------------------------------------------- + * + * Testvolumetype -- + * + * This procedure implements the "testvolumetype" command. It is + * used to check the volume type (FAT, NTFS) of a volume. + * + * Results: + * A standard Tcl result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +TestvolumetypeCmd(clientData, interp, objc, objv) + ClientData clientData; /* Not used. */ + Tcl_Interp *interp; /* Current interpreter. */ + int objc; /* Number of arguments. */ + Tcl_Obj *CONST objv[]; /* Argument objects. */ +{ +#define VOL_BUF_SIZE 32 + int found; + char volType[VOL_BUF_SIZE]; + char *path; + + if (objc > 2) { + Tcl_WrongNumArgs(interp, 1, objv, "?name?"); + return TCL_ERROR; + } + if (objc == 2) { + /* + * path has to be really a proper volume, but we don't + * get query APIs for that until NT5 + */ + path = Tcl_GetString(objv[1]); + } else { + path = NULL; + } + found = GetVolumeInformationA(path, NULL, 0, NULL, NULL, + NULL, volType, VOL_BUF_SIZE); + + if (found == 0) { + Tcl_AppendResult(interp, "could not get volume type for \"", + (path?path:""), "\"", (char *) NULL); + TclWinConvertError(GetLastError()); + return TCL_ERROR; + } + Tcl_SetResult(interp, volType, TCL_VOLATILE); + return TCL_OK; +#undef VOL_BUF_SIZE +} |