[geany/geany] 1e36d2: Add separate "input" entry to sInputFile and use it

Jiří Techet git-noreply at xxxxx
Sat Sep 10 07:26:01 UTC 2016


Branch:      refs/heads/master
Author:      Jiří Techet <techet at gmail.com>
Committer:   Jiří Techet <techet at gmail.com>
Date:        Sat, 30 Jul 2016 09:53:26 UTC
Commit:      1e36d2367e2b1180a84d7830b0f0e79be2dc44c8
             https://github.com/geany/geany/commit/1e36d2367e2b1180a84d7830b0f0e79be2dc44c8

Log Message:
-----------
Add separate "input" entry to sInputFile and use it

This patch basically just replaces

sInputFile.name -> sInputFile.input.name
sInputFile.lineNumber -> sInputFile.input.lineNumber

plus some minor related stuff.


Modified Paths:
--------------
    ctags/main/entry.c
    ctags/main/read.c
    ctags/main/read.h
    ctags/main/vstring.c
    ctags/main/vstring.h
    ctags/parsers/sh.c

Modified: ctags/main/entry.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -387,7 +387,7 @@ extern void makeTagEntry (const tagEntryInfo *const tag)
 {
 	Assert (tag->name != NULL);
 	if (tag->name [0] == '\0')
-		error (WARNING, "ignoring null tag in %s", vStringValue (File.name));
+		error (WARNING, "ignoring null tag in %s", getInputFileName ());
 	else
 	{
 		int length = 0;


Modified: ctags/main/read.c
25 lines changed, 13 insertions(+), 12 deletions(-)
===================================================================
@@ -37,7 +37,7 @@ static MIOPos StartOfLine;      /* holds deferred position of start of line */
 
 extern void freeSourceFileResources (void)
 {
-	vStringDelete (File.name);
+	vStringDelete (File.input.name);
 	vStringDelete (File.path);
 	vStringDelete (File.source.name);
 	vStringDelete (File.line);
@@ -52,9 +52,9 @@ static void setInputFileName (const char *const fileName)
 	const char *const head = fileName;
 	const char *const tail = baseFilename (head);
 
-	if (File.name != NULL)
-		vStringDelete (File.name);
-	File.name = vStringNewInit (fileName);
+	if (File.input.name != NULL)
+		vStringDelete (File.input.name);
+	File.input.name = vStringNewInit (fileName);
 
 	if (File.path != NULL)
 		vStringDelete (File.path);
@@ -76,10 +76,11 @@ static void setSourceFileParameters (vString *const fileName, const langType lan
 	if (File.source.tagPath != NULL)
 		eFree (File.source.tagPath);
 	if (! Option.tagRelative || isAbsolutePath (vStringValue (fileName)))
-		File.source.tagPath = eStrdup (vStringValue (fileName));
+		File.source.tagPath = vStringNewCopy (fileName);
 	else
 		File.source.tagPath =
-				relativeFilename (vStringValue (fileName), TagFile.directory);
+				vStringNewOwn (relativeFilename (vStringValue (fileName),
+								TagFile.directory));
 
 	if (vStringLength (fileName) > TagFile.max.file)
 		TagFile.max.file = vStringLength (fileName);
@@ -266,7 +267,7 @@ extern boolean fileOpen (const char *const fileName, const langType language)
 		mio_getpos (File.fp, &StartOfLine);
 		mio_getpos (File.fp, &File.filePosition);
 		File.currentLine  = NULL;
-		File.lineNumber   = 0L;
+		File.input.lineNumber   = 0L;
 		File.eof          = FALSE;
 		File.newLine      = TRUE;
 
@@ -312,7 +313,7 @@ extern boolean bufferOpen (unsigned char *buffer, size_t buffer_size,
 	mio_getpos (File.fp, &StartOfLine);
 	mio_getpos (File.fp, &File.filePosition);
 	File.currentLine  = NULL;
-	File.lineNumber   = 0L;
+	File.input.lineNumber   = 0L;
 	File.eof          = FALSE;
 	File.newLine      = TRUE;
 
@@ -337,8 +338,8 @@ extern void fileClose (void)
 		 *  and is incremented upon each newline.
 		 */
 		if (Option.printTotals)
-			addTotals (0, File.lineNumber - 1L,
-					  getFileSize (vStringValue (File.name)));
+			addTotals (0, File.input.lineNumber - 1L,
+					  getFileSize (vStringValue (File.input.name)));
 
 		mio_free (File.fp);
 		File.fp = NULL;
@@ -356,7 +357,7 @@ static void fileNewline (void)
 {
 	File.filePosition = StartOfLine;
 	File.newLine = FALSE;
-	File.lineNumber++;
+	File.input.lineNumber++;
 	File.source.lineNumber++;
 	DebugStatement ( if (Option.breakLine == File.lineNumber) lineBreak (); )
 	DebugStatement ( debugPrintf (DEBUG_RAW, "%6ld: ", File.lineNumber); )
@@ -610,7 +611,7 @@ extern char *readSourceLine (vString *const vLine, MIOPos location,
 		*pSeekValue = mio_tell (File.fp);
 	result = readLine (vLine, File.fp);
 	if (result == NULL)
-		error (FATAL, "Unexpected end of file: %s", vStringValue (File.name));
+		error (FATAL, "Unexpected end of file: %s", getInputFileName ());
 	mio_setpos (File.fp, &orignalPosition);
 
 	return result;


Modified: ctags/main/read.h
29 lines changed, 17 insertions(+), 12 deletions(-)
===================================================================
@@ -25,11 +25,11 @@
 /*
 *   MACROS
 */
-#define getInputLineNumber()    File.lineNumber
+#define getInputLineNumber()    File.input.lineNumber
 #define getInputFileName()  vStringValue (File.source.name)
 #define getInputFilePosition()  File.filePosition
 #define getSourceFileName() vStringValue (File.source.name)
-#define getSourceFileTagPath()  File.source.tagPath
+#define getSourceFileTagPath()  vStringValue (File.source.tagPath)
 #define getSourceLanguage() File.source.language
 #define getSourceLanguageName() getLanguageName (File.source.language)
 #define getSourceLineNumber()   File.source.lineNumber
@@ -60,15 +60,25 @@ enum eCharacters {
 	CHAR_SYMBOL   = ('C' + 0x80)
 };
 
-/*  Maintains the state of the current source file.
+/*  Maintains the state of the current input file.
  */
+typedef struct sInputFileInfo {
+	vString *name;           /* name to report for input file */
+	vString *tagPath;        /* path of input file relative to tag file */
+	unsigned long lineNumber;/* line number in the input file */
+	unsigned long lineNumberOrigin; /* The value set to `lineNumber'
+					   when `resetInputFile' is called
+					   on the input stream.
+					   This is needed for nested stream. */
+	boolean  isHeader;       /* is input file a header file? */
+	langType language;       /* language of input file */
+} inputFileInfo;
+
 typedef struct sInputFile {
-	vString *name;      /* name of input file */
 	vString *path;      /* path of input file (if any) */
 	vString *line;      /* last line read from file */
 	const unsigned char* currentLine;   /* current line being worked on */
 	MIO     *fp;        /* stream used for reading the file */
-	unsigned long lineNumber;   /* line number in the input file */
 	MIOPos  filePosition;   /* file position of current line */
 	unsigned int ungetchIdx;
 	int     ungetchBuf[3];  /* characters that were ungotten */
@@ -79,13 +89,8 @@ typedef struct sInputFile {
 	 *  was defined. This may be different from the input file when #line
 	 *  directives are processed (i.e. the input file is preprocessor output).
 	 */
-	struct sSource {
-	vString *name;      /* name to report for source file */
-	char    *tagPath;   /* path of source file relative to tag file */
-	unsigned long lineNumber;/* line number in the source file */
-	boolean  isHeader;  /* is source file a header file? */
-	langType language;  /* language of source file */
-	} source;
+	inputFileInfo input; /* name, lineNumber */
+	inputFileInfo source;
 } inputFile;
 
 /*


Modified: ctags/main/vstring.c
10 lines changed, 10 insertions(+), 0 deletions(-)
===================================================================
@@ -234,4 +234,14 @@ extern void vStringSetLength (vString *const string)
 	string->length = strlen (string->buffer);
 }
 
+extern vString *vStringNewOwn (char *s)
+{
+	vString *r;
+
+	r = vStringNewInit (s);
+	eFree (s);
+
+	return r;
+}
+
 /* vi:set tabstop=4 shiftwidth=4: */


Modified: ctags/main/vstring.h
2 lines changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -79,6 +79,8 @@ extern void vStringCopyToLower (vString *const dest, const vString *const src);
 extern void vStringSetLength (vString *const string);
 extern void vStringTruncate (vString *const string, const size_t length);
 
+extern vString *vStringNewOwn (char *s);
+
 #endif  /* _VSTRING_H */
 
 /* vi:set tabstop=4 shiftwidth=4: */


Modified: ctags/parsers/sh.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -43,7 +43,7 @@ static kindOption ShKinds [] = {
  */
 static boolean hackReject (const vString* const tagName)
 {
-	const char *const scriptName = baseFilename (vStringValue (File.name));
+	const char *const scriptName = baseFilename (getInputFileName ());
 	boolean result = (boolean) (strcmp (scriptName, "configure") == 0  &&
 							   strcmp (vStringValue (tagName), "main") == 0);
 	return result;



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list