a0dfeaa0c2
SciTE is short for SCIntillla based Text Editor. It is a very flexible but still small and fast editor providing block folding, syntax highlighting, regular expression search & replace etc. WWW: http://www.scintilla.org/SciTE.html from Joerg Sonnenberger <joerg@bec.de> with patches from Andrew Dalgleish
171 lines
6.3 KiB
Plaintext
171 lines
6.3 KiB
Plaintext
$OpenBSD: patch-src_SciTEIO_cxx,v 1.1.1.1 2003/08/14 18:27:28 sturm Exp $
|
|
--- src/SciTEIO.cxx.orig 2003-08-14 18:12:50.000000000 +0200
|
|
+++ src/SciTEIO.cxx 2003-08-14 18:14:14.000000000 +0200
|
|
@@ -146,10 +146,10 @@ const char *VMSToUnixStyle(const char *f
|
|
if (strstr (fileName, "//") == NULL) {
|
|
return fileName;
|
|
}
|
|
- strcpy(unixStyleFileName, fileName);
|
|
+ strlcpy(unixStyleFileName, fileName, sizeof(unixStyleFileName));
|
|
char *p;
|
|
while ((p = strstr (unixStyleFileName, "//")) != NULL) {
|
|
- strcpy (p, p + 1);
|
|
+ memmove(p, p + 1, strlen(p + 1)+1);
|
|
}
|
|
return unixStyleFileName;
|
|
}
|
|
@@ -159,10 +159,10 @@ const char *VMSToUnixStyle(const char *f
|
|
// o [dir.dir]file.type
|
|
|
|
if (fileName [0] == '/') {
|
|
- strcpy(unixStyleFileName, fileName);
|
|
+ strlcpy(unixStyleFileName, fileName, sizeof(unixStyleFileName));
|
|
} else {
|
|
unixStyleFileName [0] = '/';
|
|
- strcpy(unixStyleFileName + 1, fileName);
|
|
+ strlcpy(unixStyleFileName + 1, fileName, sizeof(unixStyleFileName));
|
|
char *p = strstr(unixStyleFileName, ":[");
|
|
if (p == NULL) {
|
|
// o logical:file.type
|
|
@@ -170,7 +170,7 @@ const char *VMSToUnixStyle(const char *f
|
|
*p = '/';
|
|
} else {
|
|
*p = '/';
|
|
- strcpy(p + 1, p + 2);
|
|
+ memmove(p + 1, p + 2, strlen(p + 2)+1);
|
|
char *end = strchr(unixStyleFileName, ']');
|
|
if (*end != NULL) {
|
|
*end = '/';
|
|
@@ -189,7 +189,7 @@ void SciTEBase::SetFileName(const char *
|
|
// openName is surrounded by double quotes
|
|
char pathCopy[MAX_PATH + 1];
|
|
pathCopy[0] = '\0';
|
|
- strncpy(pathCopy, openName + 1, MAX_PATH);
|
|
+ strlcpy(pathCopy, openName + 1, sizeof(pathCopy));
|
|
pathCopy[MAX_PATH] = '\0';
|
|
if (pathCopy[strlen(pathCopy) - 1] == '\"') {
|
|
pathCopy[strlen(pathCopy) - 1] = '\0';
|
|
@@ -206,9 +206,10 @@ void SciTEBase::SetFileName(const char *
|
|
char *cpDirEnd = strrchr(fullPath, pathSepChar);
|
|
if (IsAbsolutePath(fullPath)) {
|
|
// Absolute path
|
|
- strcpy(fileName, cpDirEnd + 1);
|
|
- strcpy(dirName, fullPath);
|
|
- dirName[cpDirEnd - fullPath] = '\0';
|
|
+ strlcpy(fileName, cpDirEnd + 1, sizeof(fileName));
|
|
+ strlcpy(dirName, fullPath, sizeof(dirName));
|
|
+ if ((size_t)(cpDirEnd - fullPath) < sizeof(dirName))
|
|
+ dirName[cpDirEnd - fullPath] = 0;
|
|
//Platform::DebugPrintf("SetFileName: <%s> <%s>\n", fileName, dirName);
|
|
} else {
|
|
// Relative path. Since we ran AbsolutePath, we probably are here because fullPath is empty.
|
|
@@ -216,20 +217,20 @@ void SciTEBase::SetFileName(const char *
|
|
//Platform::DebugPrintf("Working directory: <%s>\n", dirName);
|
|
if (cpDirEnd) {
|
|
// directories and file name
|
|
- strcpy(fileName, cpDirEnd + 1);
|
|
+ strlcpy(fileName, cpDirEnd + 1, sizeof(fileName));
|
|
*cpDirEnd = '\0';
|
|
- strncat(dirName, pathSepString, sizeof(dirName));
|
|
- strncat(dirName, fullPath, sizeof(dirName));
|
|
+ strlcat(dirName, pathSepString, sizeof(dirName));
|
|
+ strlcat(dirName, fullPath, sizeof(dirName));
|
|
} else {
|
|
// Just a file name
|
|
- strcpy(fileName, fullPath);
|
|
+ strlcpy(fileName, fullPath, sizeof(fileName));
|
|
}
|
|
}
|
|
|
|
// Rebuild fullPath from directory and name
|
|
- strcpy(fullPath, dirName);
|
|
- strcat(fullPath, pathSepString);
|
|
- strcat(fullPath, fileName);
|
|
+ strlcpy(fullPath, dirName, sizeof(fullPath));
|
|
+ strlcat(fullPath, pathSepString, sizeof(fullPath));
|
|
+ strlcat(fullPath, fileName, sizeof(fullPath));
|
|
//Platform::DebugPrintf("Path: <%s>\n", fullPath);
|
|
|
|
if (fixCase) {
|
|
@@ -237,11 +238,11 @@ void SciTEBase::SetFileName(const char *
|
|
}
|
|
|
|
char fileBase[MAX_PATH];
|
|
- strcpy(fileBase, fileName);
|
|
+ strlcpy(fileBase, fileName, sizeof(fileBase));
|
|
char *extension = strrchr(fileBase, '.');
|
|
if (extension) {
|
|
*extension = '\0';
|
|
- strcpy(fileExt, extension + 1);
|
|
+ strlcpy(fileExt, extension + 1, sizeof(fileExt));
|
|
} else { // No extension
|
|
fileExt[0] = '\0';
|
|
}
|
|
@@ -265,13 +266,13 @@ void SciTEBase::SetFileName(const char *
|
|
bool SciTEBase::Exists(const char *dir, const char *path, char *testPath) {
|
|
char copyPath[MAX_PATH];
|
|
if (IsAbsolutePath(path) || !dir) {
|
|
- strcpy(copyPath, path);
|
|
+ strlcpy(copyPath, path, sizeof(copyPath));
|
|
} else if (dir) {
|
|
if ((strlen(dir) + strlen(pathSepString) + strlen(path) + 1) > MAX_PATH)
|
|
return false;
|
|
- strcpy(copyPath, dir);
|
|
- strcat(copyPath, pathSepString);
|
|
- strcat(copyPath, path);
|
|
+ strlcpy(copyPath, dir, sizeof(copyPath));
|
|
+ strlcat(copyPath, pathSepString, sizeof(copyPath));
|
|
+ strlcat(copyPath, path, sizeof(copyPath));
|
|
}
|
|
FILE *fp = fopen(copyPath, fileRead);
|
|
if (!fp)
|
|
@@ -286,9 +287,9 @@ bool BuildPath(char *path, const char *d
|
|
unsigned int lenPath) {
|
|
*path = '\0';
|
|
if ((strlen(dir) + strlen(pathSepString) + strlen(fileName)) < lenPath) {
|
|
- strcpy(path, dir);
|
|
- strcat(path, pathSepString);
|
|
- strcat(path, fileName);
|
|
+ strlcpy(path, dir, lenPath);
|
|
+ strlcat(path, pathSepString, lenPath);
|
|
+ strlcat(path, fileName, lenPath);
|
|
return true;
|
|
}
|
|
return false;
|
|
@@ -455,7 +456,7 @@ bool SciTEBase::Open(const char *file, O
|
|
}
|
|
#ifdef __vms
|
|
static char fixedFileName [MAX_PATH];
|
|
- strcpy(fixedFileName, VMSToUnixStyle(file));
|
|
+ strlcpy(fixedFileName, VMSToUnixStyle(file), sizeof(fixedFileName));
|
|
file = fixedFileName;
|
|
#endif
|
|
|
|
@@ -527,7 +528,7 @@ bool SciTEBase::OpenSelected() {
|
|
unsigned long lineNumber = 0;
|
|
|
|
SString selName = SelectionFilename();
|
|
- strncpy(selectedFilename, selName.c_str(), MAX_PATH);
|
|
+ strlcpy(selectedFilename, selName.c_str(), sizeof(selectedFilename));
|
|
selectedFilename[MAX_PATH - 1] = '\0';
|
|
if (selectedFilename[0] == '\0') {
|
|
WarnUser(warnWrongFile);
|
|
@@ -544,7 +545,7 @@ bool SciTEBase::OpenSelected() {
|
|
strlen(fileName) + strlen(PROPERTIES_EXTENSION) < MAX_PATH) {
|
|
// We are in a properties file, we append the correct extension
|
|
// to open the include
|
|
- strcat(selectedFilename, PROPERTIES_EXTENSION);
|
|
+ strlcat(selectedFilename, PROPERTIES_EXTENSION, sizeof(selectedFilename));
|
|
} else {
|
|
// Check if we have a line number (error message or grep result)
|
|
// A bit of duplicate work with DecodeMessage, but we don't know
|
|
@@ -636,7 +637,7 @@ void SciTEBase::CheckReload() {
|
|
if (props.GetInt("load.on.activate")) {
|
|
// Make a copy of fullPath as otherwise it gets aliased in Open
|
|
char fullPathToCheck[MAX_PATH];
|
|
- strcpy(fullPathToCheck, fullPath);
|
|
+ strlcpy(fullPathToCheck, fullPath, sizeof(fullPathToCheck));
|
|
time_t newModTime = GetModTime(fullPathToCheck);
|
|
//Platform::DebugPrintf("Times are %d %d\n", fileModTime, newModTime);
|
|
if (newModTime > fileModTime) {
|