home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The UNIX CD Bookshelf
/
OREILLY_TUCB_UNIX_CD.iso
/
upt
/
examples
/
SOURCES
/
TKNEW
/
I386
/
TCL.
< prev
next >
Wrap
Text File
|
1998-07-24
|
3KB
|
113 lines
--- unix/Makefile.in.rtr Tue Mar 4 09:38:55 1997
+++ unix/Makefile.in Tue Mar 4 09:39:08 1997
@@ -177,7 +177,7 @@
TOOL_DIR = $(TOP_DIR)/tools
DLTEST_DIR = @srcdir@/dltest
UNIX_DIR = @srcdir@
-CC = @CC@
+CC = gcc
#----------------------------------------------------------------
# The information below should be usable as is. The configure
@@ -190,7 +190,7 @@
${AC_FLAGS} ${MATH_FLAGS} ${GENERIC_FLAGS} ${PROTO_FLAGS} ${MEM_DEBUG_FLAGS} \
${ENV_FLAGS} -DTCL_SHLIB_EXT=\"${SHLIB_SUFFIX}\"
-LIBS = @DL_LIBS@ @LIBS@ $(MATH_LIBS) -lc
+LIBS = @DL_LIBS@ @LIBS@ $(MATH_LIBS) -lc -lintl
DEPEND_SWITCHES = ${CFLAGS} -I${GENERIC_DIR} -I${SRC_DIR} \
${AC_FLAGS} ${MATH_FLAGS} \
--- unix/tclUnixFCmd.c.rtr Fri Jan 24 16:39:04 1997
+++ unix/tclUnixFCmd.c Tue Mar 4 14:50:06 1997
@@ -49,7 +49,9 @@
#include "tclInt.h"
#include "tclPort.h"
+#define _NO_PROTOTYPE
#include <utime.h>
+#undef _NO_PROTOTYPE
/*
* The following constants specify the type of callback when
@@ -85,6 +87,7 @@
TraversalProc *traversalProc,
Tcl_DString *sourcePath, Tcl_DString *destPath,
Tcl_DString *errorPtr));
+static int sco_rename (char *src, char *dst);
/*
*---------------------------------------------------------------------------
@@ -126,7 +129,7 @@
char *src; /* Pathname of file or dir to be renamed. */
char *dst; /* New pathname of file or directory. */
{
- if (rename(src, dst) == 0) {
+ if (sco_rename(src, dst) == 0) {
return TCL_OK;
}
if (errno == ENOTEMPTY) {
@@ -185,6 +188,43 @@
return TCL_ERROR;
}
+/*
+ *----------------------------------------------------------------
+ *
+ * version of rename to avoid a scn 3.2v4 bug with causes a locked up
+ * process and corrupted file system of src and dst are directories,
+ * and dst is not empty
+ *
+ *----------------------------------------------------------------
+ */
+int
+sco_rename (src, dst)
+ char *src; /* Pathname of file or dir to be renamed. */
+ char *dst; /* New pathname of file or directory. */
+{
+ DIR *dirPtr;
+ struct dirent *dirEntPtr;
+ struct stat srcstatBuf;
+ struct stat dststatBuf;
+
+ if ((stat(src, &srcstatBuf) == 0) && (S_ISDIR(srcstatBuf.st_mode)) &&
+ (stat(dst, &dststatBuf) == 0) && (S_ISDIR(dststatBuf.st_mode))) {
+ dirPtr = opendir(dst);
+ if (dirPtr != NULL) {
+ while ((dirEntPtr = readdir(dirPtr)) != NULL) {
+ if ((strcmp(dirEntPtr->d_name, ".") != 0) &&
+ (strcmp(dirEntPtr->d_name, "..") != 0)) {
+ errno = EEXIST;
+ closedir(dirPtr);
+ return TCL_ERROR;
+ }
+ }
+ closedir(dirPtr);
+ }
+ }
+ return (rename(src, dst));
+}
+
/*
*---------------------------------------------------------------------------
@@ -322,7 +362,7 @@
return TCL_ERROR;
}
- blockSize = srcStatBufPtr->st_blksize;
+ blockSize = 8192;
buffer = ckalloc(blockSize);
while (1) {
nread = read(srcFd, buffer, blockSize);
--- unix/tclUnixTime.c.rtr Wed Sep 4 18:23:05 1996
+++ unix/tclUnixTime.c Tue Mar 4 09:39:09 1997
@@ -14,6 +14,7 @@
#include "tclInt.h"
#include "tclPort.h"
+#define tm_tzadj __tm_tzadj
/*
*-----------------------------------------------------------------------------