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
248 lines
8.4 KiB
Plaintext
248 lines
8.4 KiB
Plaintext
$OpenBSD: patch-src_SciTEBuffers_cxx,v 1.1.1.1 2003/08/14 18:27:28 sturm Exp $
|
|
--- src/SciTEBuffers.cxx.orig 2003-08-14 01:31:52.000000000 +1000
|
|
+++ src/SciTEBuffers.cxx 2003-08-14 01:31:52.000000000 +1000
|
|
@@ -273,14 +273,14 @@ void SciTEBase::InitialiseBuffers() {
|
|
}
|
|
}
|
|
|
|
-static void EnsureEndsWithPathSeparator(char *path) {
|
|
+static void EnsureEndsWithPathSeparator(char *path, size_t path_size) {
|
|
size_t pathLen = strlen(path);
|
|
if ((pathLen > 0) && path[pathLen - 1] != pathSepChar) {
|
|
- strcat(path, pathSepString);
|
|
+ strlcat(path, pathSepString, path_size);
|
|
}
|
|
}
|
|
|
|
-static void RecentFilePath(char *path, const char *name) {
|
|
+static void RecentFilePath(char *path, size_t path_size, const char *name) {
|
|
char *where = getenv("SciTE_HOME");
|
|
if (!where)
|
|
where = getenv("HOME");
|
|
@@ -296,16 +296,16 @@ static void RecentFilePath(char *path, c
|
|
#endif
|
|
|
|
} else {
|
|
- strcpy(path, where);
|
|
- EnsureEndsWithPathSeparator(path);
|
|
+ strlcpy(path, where, path_size);
|
|
+ EnsureEndsWithPathSeparator(path, path_size);
|
|
}
|
|
- strcat(path, configFileVisibilityString);
|
|
- strcat(path, name);
|
|
+ strlcat(path, configFileVisibilityString, path_size);
|
|
+ strlcat(path, name, path_size);
|
|
}
|
|
|
|
void SciTEBase::LoadRecentMenu() {
|
|
char recentPathName[MAX_PATH + 1];
|
|
- RecentFilePath(recentPathName, recentFileName);
|
|
+ RecentFilePath(recentPathName, sizeof(recentPathName), recentFileName);
|
|
FILE *recentFile = fopen(recentPathName, fileRead);
|
|
if (!recentFile) {
|
|
DeleteFileStackMenu();
|
|
@@ -325,7 +325,7 @@ void SciTEBase::LoadRecentMenu() {
|
|
|
|
void SciTEBase::SaveRecentStack() {
|
|
char recentPathName[MAX_PATH + 1];
|
|
- RecentFilePath(recentPathName, recentFileName);
|
|
+ RecentFilePath(recentPathName, sizeof(recentPathName), recentFileName);
|
|
FILE *recentFile = fopen(recentPathName, fileWrite);
|
|
if (!recentFile)
|
|
return;
|
|
@@ -346,9 +346,9 @@ void SciTEBase::SaveRecentStack() {
|
|
void SciTEBase::LoadSession(const char *sessionName) {
|
|
char sessionPathName[MAX_PATH + 1];
|
|
if (sessionName[0] == '\0') {
|
|
- RecentFilePath(sessionPathName, defaultSessionFileName);
|
|
+ RecentFilePath(sessionPathName, sizeof(sessionPathName), defaultSessionFileName);
|
|
} else {
|
|
- strcpy(sessionPathName, sessionName);
|
|
+ strlcpy(sessionPathName, sessionName, sizeof(sessionPathName));
|
|
}
|
|
FILE *sessionFile = fopen(sessionPathName, fileRead);
|
|
if (!sessionFile)
|
|
@@ -379,9 +379,9 @@ void SciTEBase::LoadSession(const char *
|
|
void SciTEBase::SaveSession(const char *sessionName) {
|
|
char sessionPathName[MAX_PATH + 1];
|
|
if (sessionName[0] == '\0') {
|
|
- RecentFilePath(sessionPathName, defaultSessionFileName);
|
|
+ RecentFilePath(sessionPathName, sizeof(sessionPathName), defaultSessionFileName);
|
|
} else {
|
|
- strcpy(sessionPathName, sessionName);
|
|
+ strlcpy(sessionPathName, sessionName, sizeof(sessionPathName));
|
|
}
|
|
FILE *sessionFile = fopen(sessionPathName, fileWrite);
|
|
if (!sessionFile)
|
|
@@ -615,15 +615,15 @@ void SciTEBase::BuffersMenu() {
|
|
#if PLAT_WIN
|
|
|
|
if (pos < 10) {
|
|
- sprintf(entry, "&%d ", (pos + 1) % 10 ); // hotkey 1..0
|
|
- sprintf(titleTab, "&%d ", (pos + 1) % 10); // add hotkey to the tabbar
|
|
+ snprintf(entry, sizeof(entry), "&%d ", (pos + 1) % 10 ); // hotkey 1..0
|
|
+ snprintf(titleTab, sizeof(entry), "&%d ", (pos + 1) % 10); // add hotkey to the tabbar
|
|
}
|
|
#endif
|
|
|
|
if (buffers.buffers[pos].IsUntitled()) {
|
|
SString untitled = LocaliseString("Untitled");
|
|
- strcat(entry, untitled.c_str());
|
|
- strcat(titleTab, untitled.c_str());
|
|
+ strlcat(entry, untitled.c_str(), sizeof(entry));
|
|
+ strlcat(titleTab, untitled.c_str(), sizeof(titleTab));
|
|
} else {
|
|
SString path = buffers.buffers[pos].FullPath();
|
|
#if PLAT_WIN
|
|
@@ -635,13 +635,13 @@ void SciTEBase::BuffersMenu() {
|
|
amp += 2;
|
|
}
|
|
#endif
|
|
- strcat(entry, path.c_str());
|
|
+ strlcat(entry, path.c_str(), sizeof(entry));
|
|
|
|
char *cpDirEnd = strrchr(entry, pathSepChar);
|
|
if (cpDirEnd) {
|
|
- strcat(titleTab, cpDirEnd + 1);
|
|
+ strlcat(titleTab, cpDirEnd + 1, sizeof(titleTab));
|
|
} else {
|
|
- strcat(titleTab, entry);
|
|
+ strlcat(titleTab, entry, sizeof(titleTab));
|
|
}
|
|
}
|
|
// For short file names:
|
|
@@ -649,8 +649,8 @@ void SciTEBase::BuffersMenu() {
|
|
//strcat(entry, cpDirEnd + 1);
|
|
|
|
if (buffers.buffers[pos].isDirty) {
|
|
- strcat(entry, " *");
|
|
- strcat(titleTab, " *");
|
|
+ strlcat(entry, " *", sizeof(entry));
|
|
+ strlcat(titleTab, " *", sizeof(titleTab));
|
|
}
|
|
|
|
SetMenuItem(menuBuffers, menuStart + pos + 1, itemID, entry);
|
|
@@ -712,10 +712,10 @@ void SciTEBase::SetFileStackMenu() {
|
|
entry[0] = '\0';
|
|
#if PLAT_WIN
|
|
|
|
- sprintf(entry, "&%d ", (stackPos + 1) % 10);
|
|
+ snprintf(entry, sizeof(entry), "&%d ", (stackPos + 1) % 10);
|
|
#endif
|
|
|
|
- strcat(entry, recentFileStack[stackPos].FullPath());
|
|
+ strlcat(entry, recentFileStack[stackPos].FullPath(), sizeof(entry));
|
|
SetMenuItem(menuFile, MRU_START + stackPos + 1, itemID, entry);
|
|
}
|
|
}
|
|
@@ -1015,8 +1015,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *endPath = strchr(startPath, '\"');
|
|
int length = endPath - startPath;
|
|
if (length > 0) {
|
|
- strncpy(sourcePath, startPath, length);
|
|
- sourcePath[length] = 0;
|
|
+ strlcpy(sourcePath, startPath, length);
|
|
}
|
|
endPath++;
|
|
while (*endPath && !isdigit(*endPath)) {
|
|
@@ -1036,8 +1035,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
}
|
|
int sourceNumber = atoi(cdoc + j) - 1;
|
|
if (j > 0) {
|
|
- strncpy(sourcePath, cdoc, j - 1);
|
|
- sourcePath[j - 1] = 0;
|
|
+ strlcpy(sourcePath, cdoc, j - 1);
|
|
}
|
|
return sourceNumber;
|
|
}
|
|
@@ -1049,8 +1047,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *endPath = strchr(cdoc, '(');
|
|
int length = endPath - cdoc;
|
|
if ((length > 0) && (length < MAX_PATH)) {
|
|
- strncpy(sourcePath, cdoc, length);
|
|
- sourcePath[length] = 0;
|
|
+ strlcpy(sourcePath, cdoc, length);
|
|
}
|
|
endPath++;
|
|
return atoi(endPath) - 1;
|
|
@@ -1071,8 +1068,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *space2 = strchr(space, ' ');
|
|
if (space2) {
|
|
unsigned int length = space2 - space;
|
|
- strncpy(sourcePath, space, length);
|
|
- sourcePath[length] = '\0';
|
|
+ strlcpy(sourcePath, space, length);
|
|
return atoi(space2) - 1;
|
|
}
|
|
}
|
|
@@ -1084,8 +1080,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *line = strstr(cdoc, " line ");
|
|
int length = line - (at + 4);
|
|
if (at && line && length > 0) {
|
|
- strncpy(sourcePath, at + 4, length);
|
|
- sourcePath[length] = 0;
|
|
+ strlcpy(sourcePath, at + 4, length);
|
|
line += 6;
|
|
return atoi(line) - 1;
|
|
}
|
|
@@ -1097,8 +1092,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *line = strstr(cdoc, ":line ");
|
|
if (in && line && (line > in)) {
|
|
in += 4;
|
|
- strncpy(sourcePath, in, line - in);
|
|
- sourcePath[line - in] = 0;
|
|
+ strlcpy(sourcePath, in, line - in);
|
|
line += 6;
|
|
return atoi(line) - 1;
|
|
}
|
|
@@ -1115,8 +1109,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
char *quote = strstr(file, "'");
|
|
size_t length = quote - (file + lenFile + 1);
|
|
if (quote && length > 0) {
|
|
- strncpy(sourcePath, file + lenFile + 1, length);
|
|
- sourcePath[length] = '\0';
|
|
+ strlcpy(sourcePath, file + lenFile + 1, length);
|
|
}
|
|
line += lenLine;
|
|
return atoi(line) - 1;
|
|
@@ -1140,8 +1133,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
if (strchr("\t\n\r \"$%'*,;<>?[]^`{|}", cdoc[j])) {
|
|
j++;
|
|
}
|
|
- strncpy(sourcePath, &cdoc[j], i - j);
|
|
- sourcePath[i - j] = 0;
|
|
+ strlcpy(sourcePath, &cdoc[j], i - j);
|
|
// Because usually the address is a searchPattern, lineNumber has to be evaluated later
|
|
return 0;
|
|
}
|
|
@@ -1158,8 +1150,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
if (line && file && (line > file)) {
|
|
file += lenFile;
|
|
size_t length = line - file;
|
|
- strncpy(sourcePath, file, length);
|
|
- sourcePath[length] = '\0';
|
|
+ strlcpy(sourcePath, file, length);
|
|
line += lenLine;
|
|
return atoi(line) - 1;
|
|
}
|
|
@@ -1182,8 +1173,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
file++;
|
|
}
|
|
size_t length = strlen(file);
|
|
- strncpy(sourcePath, file, length);
|
|
- sourcePath[length] = '\0';
|
|
+ strlcpy(sourcePath, file, length);
|
|
return atoi(line)-1;
|
|
}
|
|
}
|
|
@@ -1206,8 +1196,7 @@ int DecodeMessage(char *cdoc, char *sour
|
|
file++;
|
|
char *endfile = strchr(file, ')');
|
|
size_t length = endfile - file;
|
|
- strncpy(sourcePath, file, length);
|
|
- sourcePath[length] = '\0';
|
|
+ strlcpy(sourcePath, file, length);
|
|
line++;
|
|
return atoi(line) - 1;
|
|
}
|