From ae40e74a872262866a65b2bdbe48cfd49bfe7a61 Mon Sep 17 00:00:00 2001 From: davygrvy Date: Wed, 27 Oct 2004 17:13:58 +0000 Subject: * generic/tclInt.decls: The following 9 functions were moved from * generic/tclInt.h: tclInt.h to the internal Stubs table for * generic/tclIntDecls.h: use by the test suite. As tclTest.obj is * generic/tclStubInit.c: linked to the shell, these functions need "blessed" status so as to always be exported from the library. Being placed in the Stubs table guarantees this [Bug 1054748]: TclpObjRemoveDirectory, TclpObjCopyDirectory, TclpObjCreateDirectory, TclpObjDeleteFile, TclpObjCopyFile, TclpObjRenameFile, TclpObjStat, TclpObjAccess, TclpOpenFileChannel --- generic/tclInt.decls | 34 ++++++++++++++++- generic/tclInt.h | 19 +--------- generic/tclIntDecls.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++++- generic/tclStubInit.c | 11 +++++- 4 files changed, 145 insertions(+), 21 deletions(-) diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 36b19a8..3b5dc5d 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.81 2004/10/14 15:06:02 dkf Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.82 2004/10/27 17:13:58 davygrvy Exp $ library tcl @@ -810,6 +810,38 @@ declare 199 generic { int TclMatchIsTrivial(CONST char *pattern) } +# 200-208 exported for use by the test suite [Bug 1054748] +declare 200 generic { + int TclpObjRemoveDirectory (Tcl_Obj *pathPtr, int recursive, + Tcl_Obj **errorPtr) +} +declare 201 generic { + int TclpObjCopyDirectory (Tcl_Obj *srcPathPtr, Tcl_Obj *destPathPtr, + Tcl_Obj **errorPtr) +} +declare 202 generic { + int TclpObjCreateDirectory (Tcl_Obj *pathPtr) +} +declare 203 generic { + int TclpObjDeleteFile (Tcl_Obj *pathPtr) +} +declare 204 generic { + int TclpObjCopyFile (Tcl_Obj *srcPathPtr, Tcl_Obj *destPathPtr) +} +declare 205 generic { + int TclpObjRenameFile (Tcl_Obj *srcPathPtr, Tcl_Obj *destPathPtr) +} +declare 206 generic { + int TclpObjStat (Tcl_Obj *pathPtr, Tcl_StatBuf *buf) +} +declare 207 generic { + int TclpObjAccess (Tcl_Obj *pathPtr, int mode) +} +declare 208 generic { + Tcl_Channel TclpOpenFileChannel (Tcl_Interp *interp, + Tcl_Obj *pathPtr, int mode, int permissions) +} + ############################################################################## # Define the platform specific internal Tcl interface. These functions are diff --git a/generic/tclInt.h b/generic/tclInt.h index a13d351..ca5727c 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.188 2004/10/26 16:19:58 msofer Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.189 2004/10/27 17:13:58 davygrvy Exp $ */ #ifndef _TCLINT @@ -1839,8 +1839,6 @@ EXTERN int TclParseWhiteSpace _ANSI_ARGS_((CONST char *src, int numBytes, Tcl_Parse *parsePtr, char *typePtr)); EXTERN int TclProcessReturn _ANSI_ARGS_((Tcl_Interp *interp, int code, int level, Tcl_Obj *returnOpts)); -EXTERN int TclpObjAccess _ANSI_ARGS_((Tcl_Obj *filename, - int mode)); EXTERN int TclpObjLstat _ANSI_ARGS_((Tcl_Obj *pathPtr, Tcl_StatBuf *buf)); EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void)); @@ -1883,7 +1881,6 @@ EXTERN int TclpMatchFiles _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, char *tail)); EXTERN int TclpObjNormalizePath _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *pathPtr, int nextCheckpoint)); -EXTERN int TclpObjCreateDirectory _ANSI_ARGS_((Tcl_Obj *pathPtr)); EXTERN void TclpNativeJoinPath _ANSI_ARGS_((Tcl_Obj *prefix, char *joining)); EXTERN Tcl_Obj* TclpNativeSplitPath _ANSI_ARGS_((Tcl_Obj *pathPtr, @@ -1892,15 +1889,6 @@ EXTERN Tcl_PathType TclpGetNativePathType _ANSI_ARGS_((Tcl_Obj *pathPtr, int *driveNameLengthPtr, Tcl_Obj **driveNameRef)); EXTERN int TclCrossFilesystemCopy _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *source, Tcl_Obj *target)); -EXTERN int TclpObjDeleteFile _ANSI_ARGS_((Tcl_Obj *pathPtr)); -EXTERN int TclpObjCopyDirectory _ANSI_ARGS_((Tcl_Obj *srcPathPtr, - Tcl_Obj *destPathPtr, Tcl_Obj **errorPtr)); -EXTERN int TclpObjCopyFile _ANSI_ARGS_((Tcl_Obj *srcPathPtr, - Tcl_Obj *destPathPtr)); -EXTERN int TclpObjRemoveDirectory _ANSI_ARGS_((Tcl_Obj *pathPtr, - int recursive, Tcl_Obj **errorPtr)); -EXTERN int TclpObjRenameFile _ANSI_ARGS_((Tcl_Obj *srcPathPtr, - Tcl_Obj *destPathPtr)); EXTERN int TclpMatchInDirectory _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *resultPtr, Tcl_Obj *pathPtr, CONST char *pattern, Tcl_GlobTypeData *types)); @@ -1911,11 +1899,6 @@ EXTERN Tcl_Obj* TclpObjLink _ANSI_ARGS_((Tcl_Obj *pathPtr, EXTERN int TclpObjChdir _ANSI_ARGS_((Tcl_Obj *pathPtr)); EXTERN Tcl_Obj* TclPathPart _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *pathPtr, Tcl_PathPart portion)); -EXTERN int TclpObjStat _ANSI_ARGS_((Tcl_Obj *pathPtr, - Tcl_StatBuf *buf)); -EXTERN Tcl_Channel TclpOpenFileChannel _ANSI_ARGS_((Tcl_Interp *interp, - Tcl_Obj *pathPtr, int mode, - int permissions)); EXTERN void TclpCutFileChannel _ANSI_ARGS_((Tcl_Channel chan)); EXTERN void TclpCutSockChannel _ANSI_ARGS_((Tcl_Channel chan)); EXTERN void TclpSpliceFileChannel _ANSI_ARGS_((Tcl_Channel chan)); diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 6f80d37..7549771 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIntDecls.h,v 1.71 2004/10/14 15:06:02 dkf Exp $ + * RCS: @(#) $Id: tclIntDecls.h,v 1.72 2004/10/27 17:13:58 davygrvy Exp $ */ #ifndef _TCLINTDECLS @@ -1024,6 +1024,61 @@ EXTERN int TclObjGetFrame _ANSI_ARGS_((Tcl_Interp * interp, /* 199 */ EXTERN int TclMatchIsTrivial _ANSI_ARGS_((CONST char * pattern)); #endif +#ifndef TclpObjRemoveDirectory_TCL_DECLARED +#define TclpObjRemoveDirectory_TCL_DECLARED +/* 200 */ +EXTERN int TclpObjRemoveDirectory _ANSI_ARGS_(( + Tcl_Obj * pathPtr, int recursive, + Tcl_Obj ** errorPtr)); +#endif +#ifndef TclpObjCopyDirectory_TCL_DECLARED +#define TclpObjCopyDirectory_TCL_DECLARED +/* 201 */ +EXTERN int TclpObjCopyDirectory _ANSI_ARGS_(( + Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, + Tcl_Obj ** errorPtr)); +#endif +#ifndef TclpObjCreateDirectory_TCL_DECLARED +#define TclpObjCreateDirectory_TCL_DECLARED +/* 202 */ +EXTERN int TclpObjCreateDirectory _ANSI_ARGS_(( + Tcl_Obj * pathPtr)); +#endif +#ifndef TclpObjDeleteFile_TCL_DECLARED +#define TclpObjDeleteFile_TCL_DECLARED +/* 203 */ +EXTERN int TclpObjDeleteFile _ANSI_ARGS_((Tcl_Obj * pathPtr)); +#endif +#ifndef TclpObjCopyFile_TCL_DECLARED +#define TclpObjCopyFile_TCL_DECLARED +/* 204 */ +EXTERN int TclpObjCopyFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +#endif +#ifndef TclpObjRenameFile_TCL_DECLARED +#define TclpObjRenameFile_TCL_DECLARED +/* 205 */ +EXTERN int TclpObjRenameFile _ANSI_ARGS_((Tcl_Obj * srcPathPtr, + Tcl_Obj * destPathPtr)); +#endif +#ifndef TclpObjStat_TCL_DECLARED +#define TclpObjStat_TCL_DECLARED +/* 206 */ +EXTERN int TclpObjStat _ANSI_ARGS_((Tcl_Obj * pathPtr, + Tcl_StatBuf * buf)); +#endif +#ifndef TclpObjAccess_TCL_DECLARED +#define TclpObjAccess_TCL_DECLARED +/* 207 */ +EXTERN int TclpObjAccess _ANSI_ARGS_((Tcl_Obj * pathPtr, + int mode)); +#endif +#ifndef TclpOpenFileChannel_TCL_DECLARED +#define TclpOpenFileChannel_TCL_DECLARED +/* 208 */ +EXTERN Tcl_Channel TclpOpenFileChannel _ANSI_ARGS_((Tcl_Interp * interp, + Tcl_Obj * pathPtr, int mode, int permissions)); +#endif typedef struct TclIntStubs { int magic; @@ -1244,6 +1299,15 @@ typedef struct TclIntStubs { int (*tclCompEvalObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr)); /* 197 */ int (*tclObjGetFrame) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CallFrame ** framePtrPtr)); /* 198 */ int (*tclMatchIsTrivial) _ANSI_ARGS_((CONST char * pattern)); /* 199 */ + int (*tclpObjRemoveDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr, int recursive, Tcl_Obj ** errorPtr)); /* 200 */ + int (*tclpObjCopyDirectory) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr, Tcl_Obj ** errorPtr)); /* 201 */ + int (*tclpObjCreateDirectory) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 202 */ + int (*tclpObjDeleteFile) _ANSI_ARGS_((Tcl_Obj * pathPtr)); /* 203 */ + int (*tclpObjCopyFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 204 */ + int (*tclpObjRenameFile) _ANSI_ARGS_((Tcl_Obj * srcPathPtr, Tcl_Obj * destPathPtr)); /* 205 */ + int (*tclpObjStat) _ANSI_ARGS_((Tcl_Obj * pathPtr, Tcl_StatBuf * buf)); /* 206 */ + int (*tclpObjAccess) _ANSI_ARGS_((Tcl_Obj * pathPtr, int mode)); /* 207 */ + Tcl_Channel (*tclpOpenFileChannel) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, int mode, int permissions)); /* 208 */ } TclIntStubs; #ifdef __cplusplus @@ -1931,6 +1995,42 @@ extern TclIntStubs *tclIntStubsPtr; #define TclMatchIsTrivial \ (tclIntStubsPtr->tclMatchIsTrivial) /* 199 */ #endif +#ifndef TclpObjRemoveDirectory +#define TclpObjRemoveDirectory \ + (tclIntStubsPtr->tclpObjRemoveDirectory) /* 200 */ +#endif +#ifndef TclpObjCopyDirectory +#define TclpObjCopyDirectory \ + (tclIntStubsPtr->tclpObjCopyDirectory) /* 201 */ +#endif +#ifndef TclpObjCreateDirectory +#define TclpObjCreateDirectory \ + (tclIntStubsPtr->tclpObjCreateDirectory) /* 202 */ +#endif +#ifndef TclpObjDeleteFile +#define TclpObjDeleteFile \ + (tclIntStubsPtr->tclpObjDeleteFile) /* 203 */ +#endif +#ifndef TclpObjCopyFile +#define TclpObjCopyFile \ + (tclIntStubsPtr->tclpObjCopyFile) /* 204 */ +#endif +#ifndef TclpObjRenameFile +#define TclpObjRenameFile \ + (tclIntStubsPtr->tclpObjRenameFile) /* 205 */ +#endif +#ifndef TclpObjStat +#define TclpObjStat \ + (tclIntStubsPtr->tclpObjStat) /* 206 */ +#endif +#ifndef TclpObjAccess +#define TclpObjAccess \ + (tclIntStubsPtr->tclpObjAccess) /* 207 */ +#endif +#ifndef TclpOpenFileChannel +#define TclpOpenFileChannel \ + (tclIntStubsPtr->tclpOpenFileChannel) /* 208 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index de789c6..36b7247 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.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: tclStubInit.c,v 1.105 2004/10/14 15:06:03 dkf Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.106 2004/10/27 17:13:58 davygrvy Exp $ */ #include "tclInt.h" @@ -284,6 +284,15 @@ TclIntStubs tclIntStubs = { TclCompEvalObj, /* 197 */ TclObjGetFrame, /* 198 */ TclMatchIsTrivial, /* 199 */ + TclpObjRemoveDirectory, /* 200 */ + TclpObjCopyDirectory, /* 201 */ + TclpObjCreateDirectory, /* 202 */ + TclpObjDeleteFile, /* 203 */ + TclpObjCopyFile, /* 204 */ + TclpObjRenameFile, /* 205 */ + TclpObjStat, /* 206 */ + TclpObjAccess, /* 207 */ + TclpOpenFileChannel, /* 208 */ }; TclIntPlatStubs tclIntPlatStubs = { -- cgit v0.12