[geany/geany] 5d8e29: Merge pull request #1070 from techee/tm_move

Colomban Wendling git-noreply at xxxxx
Mon Jul 25 00:06:20 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Mon, 25 Jul 2016 00:06:20 UTC
Commit:      5d8e291c6f7e5dfdfaf11cfe11e46684ffc669b5
             https://github.com/geany/geany/commit/5d8e291c6f7e5dfdfaf11cfe11e46684ffc669b5

Log Message:
-----------
Merge pull request #1070 from techee/tm_move

Move TM and ctags files


Modified Paths:
--------------
    HACKING
    Makefile.am
    configure.ac
    ctags/Makefile.am
    ctags/main/args.c
    ctags/main/args.h
    ctags/main/ctags.c
    ctags/main/ctags.h
    ctags/main/entry.c
    ctags/main/entry.h
    ctags/main/general.h
    ctags/main/get.c
    ctags/main/get.h
    ctags/main/keyword.c
    ctags/main/keyword.h
    ctags/main/lregex.c
    ctags/main/main.h
    ctags/main/mio.c
    ctags/main/mio.h
    ctags/main/nestlevel.c
    ctags/main/nestlevel.h
    ctags/main/options.c
    ctags/main/options.h
    ctags/main/parse.c
    ctags/main/parse.h
    ctags/main/parsers.h
    ctags/main/read.c
    ctags/main/read.h
    ctags/main/sort.c
    ctags/main/sort.h
    ctags/main/strlist.c
    ctags/main/strlist.h
    ctags/main/vstring.c
    ctags/main/vstring.h
    ctags/parsers/abaqus.c
    ctags/parsers/abc.c
    ctags/parsers/actionscript.c
    ctags/parsers/asciidoc.c
    ctags/parsers/asm.c
    ctags/parsers/basic.c
    ctags/parsers/c.c
    ctags/parsers/cobol.c
    ctags/parsers/conf.c
    ctags/parsers/css.c
    ctags/parsers/diff.c
    ctags/parsers/docbook.c
    ctags/parsers/erlang.c
    ctags/parsers/fortran.c
    ctags/parsers/go.c
    ctags/parsers/haskell.c
    ctags/parsers/haxe.c
    ctags/parsers/html.c
    ctags/parsers/jscript.c
    ctags/parsers/json.c
    ctags/parsers/latex.c
    ctags/parsers/lua.c
    ctags/parsers/make.c
    ctags/parsers/markdown.c
    ctags/parsers/matlab.c
    ctags/parsers/nsis.c
    ctags/parsers/objc.c
    ctags/parsers/pascal.c
    ctags/parsers/perl.c
    ctags/parsers/php.c
    ctags/parsers/powershell.c
    ctags/parsers/python.c
    ctags/parsers/r.c
    ctags/parsers/rest.c
    ctags/parsers/ruby.c
    ctags/parsers/rust.c
    ctags/parsers/sh.c
    ctags/parsers/sql.c
    ctags/parsers/tcl.c
    ctags/parsers/txt2tags.c
    ctags/parsers/verilog.c
    ctags/parsers/vhdl.c
    doc/Doxyfile.in
    doc/Makefile.am
    doc/makefile.win32
    doc/making-a-release
    makefile.win32
    plugins/Makefile.am
    plugins/makefile.win32
    scintilla/Makefile.am
    scintilla/gtk/makefile.win32
    scripts/create_php_tags.py
    src/Makefile.am
    src/filetypes.h
    src/makefile.win32
    src/tagmanager/Makefile.am
    src/tagmanager/tm_ctags_wrappers.c
    src/tagmanager/tm_ctags_wrappers.h
    src/tagmanager/tm_parser.c
    src/tagmanager/tm_parser.h
    src/tagmanager/tm_source_file.c
    src/tagmanager/tm_source_file.h
    src/tagmanager/tm_tag.c
    src/tagmanager/tm_tag.h
    src/tagmanager/tm_workspace.c
    src/tagmanager/tm_workspace.h
    tagmanager/Makefile.am
    tagmanager/ctags/Makefile.am
    tagmanager/ctags/makefile.win32
    tagmanager/mio/COPYING
    tagmanager/mio/Makefile.am
    tagmanager/mio/README
    tagmanager/mio/makefile.win32
    tagmanager/mio/mio-file.c
    tagmanager/mio/mio-memory.c
    tagmanager/mio/mio.c
    tagmanager/mio/mio.h
    tagmanager/src/makefile.win32
    win32-config.h

Modified: HACKING
5 lines changed, 1 insertions(+), 4 deletions(-)
===================================================================
@@ -497,7 +497,6 @@ printf("Prefix: %s", GEANY_PREFIX);
 Adding a source file foo.[hc] in src/ or plugins/
 -------------------------------------------------
 * Add foo.c, foo.h to SRCS in path/Makefile.am.
-* Add foo.o to OBJS in path/makefile.win32.
 * Add path/foo.c to po/POTFILES.in (for string translation).
 
 Adding a filetype
@@ -560,7 +559,6 @@ LexFoo.cxx. Try the official Scintilla project first.
 When adding a lexer, update:
 
 * scintilla/Makefile.am
-* scintilla/makefile.win32
 * scintilla/src/Catalogue.cxx - add a LINK_LEXER command *manually*
 
 For syntax highlighting, you will need to edit highlighting.c and
@@ -648,9 +646,8 @@ http://sf.net/projects/ctags - see the tracker.
 Method
 ``````
 * Add foo.c to SRCS in Makefile.am.
-* Add foo.o to OBJS in makefile.win32.
 * Add Foo to parsers.h
-* Add TM_PARSER_FOO to tagmanager/src/tm_parser.h.  The list here must follow
+* Add TM_PARSER_FOO to src/tagmanager/tm_parser.h.  The list here must follow
   exactly the order in parsers.h.
 
 In tagmanager/src/tm_parsers.c:


Modified: Makefile.am
6 lines changed, 2 insertions(+), 4 deletions(-)
===================================================================
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = tagmanager scintilla src plugins icons po doc data tests
+SUBDIRS = ctags scintilla src plugins icons po doc data tests
 
 AUTOMAKE_OPTIONS =	1.7
 
@@ -10,9 +10,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = --enable-api-docs --enable-html-docs --enable-pdf
 
 WIN32_BUILD_FILES = \
 	geany_private.rc \
-	geany.exe.manifest \
-	win32-config.h \
-	makefile.win32
+	geany.exe.manifest
 
 EXTRA_DIST = \
 	autogen.sh \


Modified: configure.ac
6 lines changed, 2 insertions(+), 4 deletions(-)
===================================================================
@@ -147,13 +147,11 @@ AC_CONFIG_FILES([
 		icons/tango/32x32/Makefile
 		icons/tango/48x48/Makefile
 		icons/tango/scalable/Makefile
-		tagmanager/Makefile
-		tagmanager/ctags/Makefile
-		tagmanager/mio/Makefile
-		tagmanager/src/Makefile
+		ctags/Makefile
 		scintilla/Makefile
 		scintilla/include/Makefile
 		src/Makefile
+		src/tagmanager/Makefile
 		plugins/Makefile
 		po/Makefile.in
 		data/Makefile


Modified: ctags/Makefile.am
86 lines changed, 86 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,86 @@
+AM_CPPFLAGS = \
+	-I$(srcdir)/main \
+	-I$(srcdir)/parsers \
+	-DG_LOG_DOMAIN=\"CTags\"
+AM_CFLAGS = \
+	$(GTK_CFLAGS) \
+	@LIBGEANY_CFLAGS@
+
+noinst_LTLIBRARIES = libctags.la
+
+parsers = \
+	parsers/abaqus.c \
+	parsers/abc.c \
+	parsers/actionscript.c \
+	parsers/asciidoc.c \
+	parsers/asm.c \
+	parsers/basic.c \
+	parsers/c.c \
+	parsers/cobol.c \
+	parsers/conf.c \
+	parsers/css.c \
+	parsers/diff.c \
+	parsers/docbook.c \
+	parsers/erlang.c \
+	parsers/fortran.c \
+	parsers/go.c \
+	parsers/haskell.c \
+	parsers/haxe.c \
+	parsers/html.c \
+	parsers/jscript.c \
+	parsers/json.c \
+	parsers/latex.c \
+	parsers/lua.c \
+	parsers/make.c \
+	parsers/markdown.c \
+	parsers/matlab.c \
+	parsers/nsis.c \
+	parsers/objc.c \
+	parsers/pascal.c \
+	parsers/perl.c \
+	parsers/php.c \
+	parsers/powershell.c \
+	parsers/python.c \
+	parsers/r.c \
+	parsers/rest.c \
+	parsers/ruby.c \
+	parsers/rust.c \
+	parsers/sh.c \
+	parsers/sql.c \
+	parsers/tcl.c \
+	parsers/txt2tags.c \
+	parsers/verilog.c \
+	parsers/vhdl.c
+
+libctags_la_SOURCES = \
+	main/args.c \
+	main/args.h \
+	main/ctags.c \
+	main/ctags.h \
+	main/entry.c \
+	main/entry.h \
+	main/general.h \
+	main/get.c \
+	main/get.h \
+	main/keyword.c \
+	main/keyword.h \
+	main/lregex.c \
+	main/main.h \
+	main/mio.c \
+	main/mio.h \
+	main/nestlevel.c \
+	main/nestlevel.h \
+	main/options.c \
+	main/options.h \
+	main/parse.c \
+	main/parse.h \
+	main/parsers.h \
+	main/read.c \
+	main/read.h \
+	main/sort.c \
+	main/sort.h \
+	main/strlist.c \
+	main/strlist.h \
+	main/vstring.c \
+	main/vstring.h \
+	$(parsers)


Modified: ctags/main/args.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/args.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/ctags.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/ctags.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/entry.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/entry.h
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -15,8 +15,7 @@
 */
 #include "general.h"	/* must always come first */
 
-#include <mio/mio.h>
-
+#include "mio.h"
 #include "vstring.h"
 
 /*


Modified: ctags/main/general.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/get.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/get.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/keyword.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/keyword.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/lregex.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -18,7 +18,6 @@
 
 #include <string.h>
 #include <glib.h>
-#include <mio/mio.h>
 
 #ifdef HAVE_REGCOMP
 # include <ctype.h>
@@ -28,6 +27,7 @@
 # endif
 #endif
 
+#include "mio.h"
 #include "main.h"
 #include "entry.h"
 #include "parse.h"


Modified: ctags/main/main.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/mio.c
1063 lines changed, 1063 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,1063 @@
+/*
+ *  MIO, an I/O abstraction layer replicating C file I/O API.
+ *  Copyright (C) 2010  Colomban Wendling <ban at herbesfolles.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include "mio.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <limits.h>
+
+/* minimal reallocation chunk size */
+#define MIO_CHUNK_SIZE 4096
+
+#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
+
+
+/**
+ * SECTION:mio
+ * @short_description: The MIO object
+ * @include: mio/mio.h
+ *
+ * The #MIO object replicates the C file I/O API with support of both standard
+ * file based operations and in-memory operations. Its goal is to ease the port
+ * of an application that uses C file I/O API to perform in-memory operations.
+ *
+ * A #MIO object is created using mio_new_file() or mio_new_memory(), depending
+ * on whether you want file or in-memory operations, and destroyed using
+ * mio_free(). There is also some other convenient API to create file-based
+ * #MIO objects for more complex cases, such as mio_new_file_full() and
+ * mio_new_fp().
+ *
+ * Once the #MIO object is created, you can perform standard I/O operations on
+ * it transparently without the need to care about the effective underlying
+ * operations.
+ *
+ * The I/O API is almost exactly a replication of the standard C file I/O API
+ * with the significant difference that the first parameter is always the #MIO
+ * object to work on.
+ */
+
+
+/**
+ * mio_new_file_full:
+ * @filename: Filename to open, passed as-is to @open_func as the first argument
+ * @mode: Mode in which open the file, passed as-is to @open_func as the second
+ *        argument
+ * @open_func: A function with the fopen() semantic to use to open the file
+ * @close_func: A function with the fclose() semantic to close the file when
+ *              the #MIO object is destroyed, or %NULL not to close the #FILE
+ *              object
+ *
+ * Creates a new #MIO object working on a file, from a filename and an opening
+ * function. See also mio_new_file().
+ *
+ * This function is generally overkill and mio_new_file() should often be used
+ * instead, but it allows to specify a custom function to open a file, as well
+ * as a close function. The former is useful e.g. if you need to wrap fopen()
+ * for some reason (like filename encoding conversion for example), and the
+ * latter allows you both to match your custom open function and to choose
+ * whether the underlying #FILE object should or not be closed when mio_free()
+ * is called on the returned object.
+ *
+ * Free-function: mio_free()
+ *
+ * Returns: A new #MIO on success, or %NULL on failure.
+ */
+MIO *mio_new_file_full (const char *filename,
+						const char *mode,
+						MIOFOpenFunc open_func,
+						MIOFCloseFunc close_func)
+{
+	MIO *mio;
+
+	/* we need to create the MIO object first, because we may not be able to close
+	 * the opened file if the user passed NULL as the close function, which means
+	 * that everything must succeed if we've opened the file successfully */
+	mio = malloc (sizeof *mio);
+	if (mio)
+	{
+		FILE *fp = open_func (filename, mode);
+
+		if (! fp)
+		{
+			free (mio);
+			mio = NULL;
+		}
+		else
+		{
+			mio->type = MIO_TYPE_FILE;
+			mio->impl.file.fp = fp;
+			mio->impl.file.close_func = close_func;
+		}
+	}
+
+	return mio;
+}
+
+/**
+ * mio_new_file:
+ * @filename: Filename to open, same as the fopen()'s first argument
+ * @mode: Mode in which open the file, fopen()'s second argument
+ *
+ * Creates a new #MIO object working on a file from a filename; wrapping
+ * fopen().
+ * This function simply calls mio_new_file_full() with the libc's fopen() and
+ * fclose() functions.
+ *
+ * Free-function: mio_free()
+ *
+ * Returns: A new #MIO on success, or %NULL on failure.
+ */
+MIO *mio_new_file (const char *filename, const char *mode)
+{
+	return mio_new_file_full (filename, mode, fopen, fclose);
+}
+
+/**
+ * mio_new_fp:
+ * @fp: An opened #FILE object
+ * @close_func: (allow-none): Function used to close @fp when the #MIO object
+ *              gets destroyed, or %NULL not to close the #FILE object
+ *
+ * Creates a new #MIO object working on a file, from an already opened #FILE
+ * object.
+ *
+ * <example>
+ * <title>Typical use of this function</title>
+ * <programlisting>
+ * MIO *mio = mio_new_fp (fp, fclose);
+ * </programlisting>
+ * </example>
+ *
+ * Free-function: mio_free()
+ *
+ * Returns: A new #MIO on success or %NULL on failure.
+ */
+MIO *mio_new_fp (FILE *fp, MIOFCloseFunc close_func)
+{
+	MIO *mio;
+
+	if (!fp)
+		return NULL;
+
+	mio = malloc (sizeof *mio);
+	if (mio)
+	{
+		mio->type = MIO_TYPE_FILE;
+		mio->impl.file.fp = fp;
+		mio->impl.file.close_func = close_func;
+	}
+
+	return mio;
+}
+
+/**
+ * mio_new_memory:
+ * @data: Initial data (may be %NULL)
+ * @size: Length of @data in bytes
+ * @realloc_func: A function with the realloc() semantic used to grow the
+ *                buffer, or %NULL to disable buffer growing
+ * @free_func: A function with the free() semantic to destroy the data together
+ *             with the object, or %NULL not to destroy the data
+ *
+ * Creates a new #MIO object working on memory.
+ *
+ * To allow the buffer to grow, you must provide a @realloc_func, otherwise
+ * trying to write after the end of the current data will fail.
+ *
+ * If you want the buffer to be freed together with the #MIO object, you must
+ * give a @free_func; otherwise the data will still live after #MIO object
+ * termination.
+ *
+ * <example>
+ * <title>Basic creation of a non-growable, freeable #MIO object</title>
+ * <programlisting>
+ * MIO *mio = mio_new_memory (data, size, NULL, g_free);
+ * </programlisting>
+ * </example>
+ *
+ * <example>
+ * <title>Basic creation of an empty growable and freeable #MIO object</title>
+ * <programlisting>
+ * MIO *mio = mio_new_memory (NULL, 0, g_try_realloc, g_free);
+ * </programlisting>
+ * </example>
+ *
+ * Free-function: mio_free()
+ *
+ * Returns: A new #MIO on success, or %NULL on failure.
+ */
+MIO *mio_new_memory (unsigned char *data,
+					 size_t size,
+					 MIOReallocFunc realloc_func,
+					 MIODestroyNotify free_func)
+{
+	MIO *mio;
+
+	mio = malloc (sizeof *mio);
+	if (mio)
+	{
+		mio->type = MIO_TYPE_MEMORY;
+		mio->impl.mem.buf = data;
+		mio->impl.mem.ungetch = EOF;
+		mio->impl.mem.pos = 0;
+		mio->impl.mem.size = size;
+		mio->impl.mem.allocated_size = size;
+		mio->impl.mem.realloc_func = realloc_func;
+		mio->impl.mem.free_func = free_func;
+		mio->impl.mem.eof = FALSE;
+		mio->impl.mem.error = FALSE;
+	}
+
+	return mio;
+}
+
+/**
+ * mio_file_get_fp:
+ * @mio: A #MIO object
+ *
+ * Gets the underlying #FILE object associated with a #MIO file stream.
+ *
+ * <warning><para>The returned object may become invalid after a call to
+ * mio_free() if the stream was configured to close the file when
+ * destroyed.</para></warning>
+ *
+ * Returns: The underlying #FILE object of the given stream, or %NULL if the
+ *          stream is not a file stream.
+ */
+FILE *mio_file_get_fp (MIO *mio)
+{
+	FILE *fp = NULL;
+
+	if (mio->type == MIO_TYPE_FILE)
+		fp = mio->impl.file.fp;
+
+	return fp;
+}
+
+/**
+ * mio_memory_get_data:
+ * @mio: A #MIO object
+ * @size: (allow-none) (out): Return location for the length of the returned
+ *        memory, or %NULL
+ *
+ * Gets the underlying memory buffer associated with a #MIO memory stream.
+ *
+ * <warning><para>The returned pointer and size may become invalid after a
+ * successful write on the stream or after a call to mio_free() if the stream
+ * was configured to free the memory when destroyed.</para></warning>
+ *
+ * Returns: The memory buffer of the given #MIO stream, or %NULL if the stream
+ *          is not a memory stream.
+ */
+unsigned char *mio_memory_get_data (MIO *mio, size_t *size)
+{
+	unsigned char *ptr = NULL;
+
+	if (mio->type == MIO_TYPE_MEMORY)
+	{
+		ptr = mio->impl.mem.buf;
+		if (size)
+			*size = mio->impl.mem.size;
+	}
+
+	return ptr;
+}
+
+/**
+ * mio_free:
+ * @mio: A #MIO object
+ *
+ * Destroys a #MIO object.
+ *
+ * Returns: Error code obtained from the registered MIOFCloseFunc or 0 on success.
+ */
+int mio_free (MIO *mio)
+{
+	int rv = 0;
+
+	if (mio)
+	{
+		if (mio->type == MIO_TYPE_FILE)
+		{
+			if (mio->impl.file.close_func)
+				rv = mio->impl.file.close_func (mio->impl.file.fp);
+			mio->impl.file.close_func = NULL;
+			mio->impl.file.fp = NULL;
+		}
+		else
+		{
+			if (mio->impl.mem.free_func)
+				mio->impl.mem.free_func (mio->impl.mem.buf);
+			mio->impl.mem.buf = NULL;
+			mio->impl.mem.pos = 0;
+			mio->impl.mem.size = 0;
+			mio->impl.mem.allocated_size = 0;
+			mio->impl.mem.realloc_func = NULL;
+			mio->impl.mem.free_func = NULL;
+			mio->impl.mem.eof = FALSE;
+			mio->impl.mem.error = FALSE;
+		}
+
+		free (mio);
+	}
+
+	return rv;
+}
+
+/**
+ * mio_read:
+ * @mio: A #MIO object
+ * @ptr: Pointer to the memory to fill with the read data
+ * @size: Size of each block to read
+ * @nmemb: Number o blocks to read
+ *
+ * Reads raw data from a #MIO stream. This function behave the same as fread().
+ *
+ * Returns: The number of actually read blocks. If an error occurs or if the
+ *          end of the stream is reached, the return value may be smaller than
+ *          the requested block count, or even 0. This function doesn't
+ *          distinguish between end-of-stream and an error, you should then use
+ *          mio_eof() and mio_error() to determine which occurred.
+ */
+size_t mio_read (MIO *mio,
+				 void *ptr_,
+				 size_t size,
+				 size_t nmemb)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fread (ptr_, size, nmemb, mio->impl.file.fp);
+	else
+	{
+		size_t n_read = 0;
+
+		if (size != 0 && nmemb != 0)
+		{
+			size_t size_avail = mio->impl.mem.size - mio->impl.mem.pos;
+			size_t copy_bytes = size * nmemb;
+			unsigned char *ptr = ptr_;
+
+			if (size_avail < copy_bytes)
+				copy_bytes = size_avail;
+
+			if (copy_bytes > 0)
+			{
+				n_read = copy_bytes / size;
+
+				if (mio->impl.mem.ungetch != EOF)
+				{
+					*ptr = (unsigned char) mio->impl.mem.ungetch;
+					mio->impl.mem.ungetch = EOF;
+					copy_bytes--;
+					mio->impl.mem.pos++;
+					ptr++;
+				}
+
+				memcpy (ptr, &mio->impl.mem.buf[mio->impl.mem.pos], copy_bytes);
+				mio->impl.mem.pos += copy_bytes;
+			}
+			if (mio->impl.mem.pos >= mio->impl.mem.size)
+				mio->impl.mem.eof = TRUE;
+		}
+
+		return n_read;
+	}
+}
+
+/*
+ * mem_try_resize:
+ * @mio: A #MIO object of the type %MIO_TYPE_MEMORY
+ * @new_size: Requested new size
+ *
+ * Tries to resize the underlying buffer of an in-memory #MIO object.
+ * This supports both growing and shrinking.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise.
+ */
+static int mem_try_resize (MIO *mio, size_t new_size)
+{
+	int success = FALSE;
+
+	if (mio->impl.mem.realloc_func)
+	{
+		if (new_size == ULONG_MAX)
+		{
+#ifdef EOVERFLOW
+			errno = EOVERFLOW;
+#endif
+		}
+		else
+		{
+			if (new_size > mio->impl.mem.size)
+			{
+				if (new_size <= mio->impl.mem.allocated_size)
+				{
+					mio->impl.mem.size = new_size;
+					success = TRUE;
+				}
+				else
+				{
+					size_t newsize;
+					unsigned char *newbuf;
+
+					newsize = MAX (mio->impl.mem.allocated_size + MIO_CHUNK_SIZE,
+								   new_size);
+					newbuf = mio->impl.mem.realloc_func (mio->impl.mem.buf, newsize);
+					if (newbuf)
+					{
+						mio->impl.mem.buf = newbuf;
+						mio->impl.mem.allocated_size = newsize;
+						mio->impl.mem.size = new_size;
+						success = TRUE;
+					}
+				}
+			}
+			else
+			{
+				unsigned char *newbuf;
+
+				newbuf = mio->impl.mem.realloc_func (mio->impl.mem.buf, new_size);
+				if (newbuf || new_size == 0)
+				{
+					mio->impl.mem.buf = newbuf;
+					mio->impl.mem.allocated_size = new_size;
+					mio->impl.mem.size = new_size;
+					success = TRUE;
+				}
+			}
+		}
+	}
+
+	return success;
+}
+
+/*
+ * mem_try_ensure_space:
+ * @mio: A #MIO object
+ * @n: Requested size from the current (cursor) position
+ *
+ * Tries to ensure there is enough space for @n bytes to be written from the
+ * current cursor position.
+ *
+ * Returns: %TRUE if there is enough space, %FALSE otherwise.
+ */
+static int mem_try_ensure_space (MIO *mio, size_t n)
+{
+	int success = TRUE;
+
+	if (mio->impl.mem.pos + n > mio->impl.mem.size)
+		success = mem_try_resize (mio, mio->impl.mem.pos + n);
+
+	return success;
+}
+
+/**
+ * mio_write:
+ * @mio: A #MIO object
+ * @ptr: Pointer to the memory to write on the stream
+ * @size: Size of each block to write
+ * @nmemb: Number of block to write
+ *
+ * Writes raw data to a #MIO stream. This function behaves the same as fwrite().
+ *
+ * Returns: The number of blocks actually written to the stream. This might be
+ *          smaller than the requested count if a write error occurs.
+ */
+size_t mio_write (MIO *mio,
+				  const void *ptr,
+				  size_t size,
+				  size_t nmemb)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fwrite (ptr, size, nmemb, mio->impl.file.fp);
+	else
+	{
+		size_t n_written = 0;
+
+		if (size != 0 && nmemb != 0)
+		{
+			if (mem_try_ensure_space (mio, size * nmemb))
+			{
+				memcpy (&mio->impl.mem.buf[mio->impl.mem.pos], ptr, size * nmemb);
+				mio->impl.mem.pos += size * nmemb;
+				n_written = nmemb;
+			}
+		}
+
+		return n_written;
+	}
+}
+
+/**
+ * mio_putc:
+ * @mio: A #MIO object
+ * @c: The character to write
+ *
+ * Writes a character to a #MIO stream. This function behaves the same as
+ * fputc().
+ *
+ * Returns: The written wharacter, or %EOF on error.
+ */
+int mio_putc (MIO *mio, int c)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fputc (c, mio->impl.file.fp);
+	else
+	{
+		int rv = EOF;
+
+		if (mem_try_ensure_space (mio, 1))
+		{
+			mio->impl.mem.buf[mio->impl.mem.pos] = (unsigned char)c;
+			mio->impl.mem.pos++;
+			rv = (int)((unsigned char)c);
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_puts:
+ * @mio: A #MIO object
+ * @s: The string to write
+ *
+ * Writes a string to a #MIO object. This function behaves the same as fputs().
+ *
+ * Returns: A non-negative integer on success or %EOF on failure.
+ */
+int mio_puts (MIO *mio, const char *s)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fputs (s, mio->impl.file.fp);
+	else
+	{
+		int rv = EOF;
+		size_t len;
+
+		len = strlen (s);
+		if (mem_try_ensure_space (mio, len))
+		{
+			memcpy (&mio->impl.mem.buf[mio->impl.mem.pos], s, len);
+			mio->impl.mem.pos += len;
+			rv = 1;
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_vprintf:
+ * @mio: A #MIO object
+ * @format: A printf fomrat string
+ * @ap: The variadic argument list for the format
+ *
+ * Writes a formatted string into a #MIO stream. This function behaves the same
+ * as vfprintf().
+ *
+ * Returns: The number of bytes written in the stream, or a negative value on
+ *          failure.
+ */
+int mio_vprintf (MIO *mio, const char *format, va_list ap)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return vfprintf (mio->impl.file.fp, format, ap);
+	else
+	{
+		int rv = -1;
+		size_t n;
+		size_t old_pos;
+		size_t old_size;
+		va_list ap_copy;
+		char dummy;
+
+		old_pos = mio->impl.mem.pos;
+		old_size = mio->impl.mem.size;
+		va_copy (ap_copy, ap);
+		/* compute the size we will need into the buffer */
+		n = vsnprintf (&dummy, 1, format, ap_copy);
+		va_end (ap_copy);
+		if (mem_try_ensure_space (mio, n))
+		{
+			unsigned char c;
+
+			/* backup character at n+1 that will be overwritten by a \0 ... */
+			c = mio->impl.mem.buf[mio->impl.mem.pos + (n - 1)];
+			rv = vsprintf ((char *)&mio->impl.mem.buf[mio->impl.mem.pos], format, ap);
+			/* ...and restore it */
+			mio->impl.mem.buf[mio->impl.mem.pos + (n - 1)] = c;
+			if (rv >= 0 && (size_t)rv == (n - 1))
+			{
+				/* re-compute the actual size since we might have allocated one byte
+				 * more than needed */
+				mio->impl.mem.size = MAX (old_size, old_pos + (unsigned int)rv);
+				mio->impl.mem.pos += (unsigned int)rv;
+			}
+			else
+			{
+				mio->impl.mem.size = old_size;
+				rv = -1;
+			}
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_printf:
+ * @mio: A #MIO object
+ * @format: A print format string
+ * @...: Arguments of the format
+ *
+ * Writes a formatted string to a #MIO stream. This function behaves the same as
+ * fprintf().
+ *
+ * Returns: The number of bytes written to the stream, or a negative value on
+ *          failure.
+ */
+int mio_printf (MIO *mio, const char *format, ...)
+{
+	int rv;
+	va_list ap;
+
+	va_start (ap, format);
+	rv = mio_vprintf (mio, format, ap);
+	va_end (ap);
+
+	return rv;
+}
+
+/**
+ * mio_getc:
+ * @mio: A #MIO object
+ *
+ * Gets the current character from a #MIO stream. This function behaves the same
+ * as fgetc().
+ *
+ * Returns: The read character as a #int, or %EOF on error.
+ */
+int mio_getc (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fgetc (mio->impl.file.fp);
+	else
+	{
+		int rv = EOF;
+
+		if (mio->impl.mem.ungetch != EOF)
+		{
+			rv = mio->impl.mem.ungetch;
+			mio->impl.mem.ungetch = EOF;
+			mio->impl.mem.pos++;
+		}
+		else if (mio->impl.mem.pos < mio->impl.mem.size)
+		{
+			rv = mio->impl.mem.buf[mio->impl.mem.pos];
+			mio->impl.mem.pos++;
+		}
+		else
+			mio->impl.mem.eof = TRUE;
+
+		return rv;
+	}
+}
+
+/**
+ * mio_ungetc:
+ * @mio: A #MIO object
+ * @ch: Character to put back in the stream
+ *
+ * Puts a character back in a #MIO stream. This function behaves the sames as
+ * ungetc().
+ *
+ * <warning><para>It is only guaranteed that one character can be but back at a
+ * time, even if the implementation may allow more.</para></warning>
+ * <warning><para>Using this function while the stream cursor is at offset 0 is
+ * not guaranteed to function properly. As the C99 standard says, it is "an
+ * obsolescent feature".</para></warning>
+ *
+ * Returns: The character put back, or %EOF on error.
+ */
+int mio_ungetc (MIO *mio, int ch)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return ungetc (ch, mio->impl.file.fp);
+	else
+	{
+		int rv = EOF;
+
+		if (ch != EOF && mio->impl.mem.ungetch == EOF)
+		{
+			rv = mio->impl.mem.ungetch = ch;
+			mio->impl.mem.pos--;
+			mio->impl.mem.eof = FALSE;
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_gets:
+ * @mio: A #MIO object
+ * @s: A string to fill with the read data
+ * @size: The maximum number of bytes to read
+ *
+ * Reads a string from a #MIO stream, stopping after the first new-line
+ * character or at the end of the stream. This function behaves the same as
+ * fgets().
+ *
+ * Returns: @s on success, %NULL otherwise.
+ */
+char *mio_gets (MIO *mio, char *s, size_t size)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fgets (s, (int)size, mio->impl.file.fp);
+	else
+	{
+		char *rv = NULL;
+
+		if (size > 0)
+		{
+			size_t i = 0;
+
+			if (mio->impl.mem.ungetch != EOF)
+			{
+				s[i] = (char)mio->impl.mem.ungetch;
+				mio->impl.mem.ungetch = EOF;
+				mio->impl.mem.pos++;
+				i++;
+			}
+			for (; mio->impl.mem.pos < mio->impl.mem.size && i < (size - 1); i++)
+			{
+				s[i] = (char)mio->impl.mem.buf[mio->impl.mem.pos];
+				mio->impl.mem.pos++;
+				if (s[i] == '\n')
+				{
+					i++;
+					break;
+				}
+			}
+			if (i > 0)
+			{
+				s[i] = 0;
+				rv = s;
+			}
+			if (mio->impl.mem.pos >= mio->impl.mem.size)
+				mio->impl.mem.eof = TRUE;
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_clearerr:
+ * @mio: A #MIO object
+ *
+ * Clears the error and end-of-stream indicators of a #MIO stream. This function
+ * behaves the same as clearerr().
+ */
+void mio_clearerr (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		clearerr (mio->impl.file.fp);
+	else
+	{
+		mio->impl.mem.error = FALSE;
+		mio->impl.mem.eof = FALSE;
+	}
+}
+
+/**
+ * mio_eof:
+ * @mio: A #MIO object
+ *
+ * Checks whether the end-of-stream indicator of a #MIO stream is set. This
+ * function behaves the same as feof().
+ *
+ * Returns: A non-null value if the stream reached its end, 0 otherwise.
+ */
+int mio_eof (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return feof (mio->impl.file.fp);
+	else
+		return mio->impl.mem.eof != FALSE;
+}
+
+/**
+ * mio_error:
+ * @mio: A #MIO object
+ *
+ * Checks whether the error indicator of a #MIO stream is set. This function
+ * behaves the same as ferror().
+ *
+ * Returns: A non-null value if the stream have an error set, 0 otherwise.
+ */
+int mio_error (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return ferror (mio->impl.file.fp);
+	else
+		return mio->impl.mem.error != FALSE;
+}
+
+/**
+ * mio_seek:
+ * @mio: A #MIO object
+ * @offset: Offset of the new place, from @whence
+ * @whence: Move origin. SEEK_SET moves relative to the start of the stream,
+ *          SEEK_CUR from the current position and SEEK_SET from the end of the
+ *          stream.
+ *
+ * Sets the curosr position on a #MIO stream. This functions behaves the same as
+ * fseek(). See also mio_tell() and mio_setpos().
+ *
+ * Returns: 0 on success, -1 otherwise, in which case errno should be set to
+ *          indicate the error.
+ */
+int mio_seek (MIO *mio, long offset, int whence)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fseek (mio->impl.file.fp, offset, whence);
+	else
+	{
+		/* FIXME: should we support seeking out of bounds like lseek() seems to do? */
+		int rv = -1;
+
+		switch (whence)
+		{
+			case SEEK_SET:
+				if (offset < 0 || (size_t)offset > mio->impl.mem.size)
+					errno = EINVAL;
+				else
+				{
+					mio->impl.mem.pos = (size_t)offset;
+					rv = 0;
+				}
+				break;
+
+			case SEEK_CUR:
+				if ((offset < 0 && (size_t)-offset > mio->impl.mem.pos) ||
+					mio->impl.mem.pos + (size_t)offset > mio->impl.mem.size)
+				{
+					errno = EINVAL;
+				}
+				else
+				{
+					mio->impl.mem.pos = (size_t)(mio->impl.mem.pos + offset);
+					rv = 0;
+				}
+				break;
+
+			case SEEK_END:
+				if (offset > 0 || (size_t)-offset > mio->impl.mem.size)
+					errno = EINVAL;
+				else
+				{
+					mio->impl.mem.pos = mio->impl.mem.size - (size_t)-offset;
+					rv = 0;
+				}
+				break;
+
+			default:
+				errno = EINVAL;
+		}
+		if (rv == 0)
+		{
+			mio->impl.mem.eof = FALSE;
+			mio->impl.mem.ungetch = EOF;
+		}
+
+		return rv;
+	}
+}
+
+/**
+ * mio_tell:
+ * @mio: A #MIO object
+ *
+ * Gets the current cursor position of a #MIO stream. This function behaves the
+ * same as ftell().
+ *
+ * Returns: The current offset from the start of the stream, or -1 or error, in
+ *          which case errno is set to indicate the error.
+ */
+long mio_tell (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return ftell (mio->impl.file.fp);
+	else
+	{
+		long rv = -1;
+
+		if (mio->impl.mem.pos > LONG_MAX)
+		{
+#ifdef EOVERFLOW
+			errno = EOVERFLOW;
+#endif
+		}
+		else
+			rv = (long)mio->impl.mem.pos;
+
+		return rv;
+	}
+}
+
+/**
+ * mio_rewind:
+ * @mio: A #MIO object
+ *
+ * Resets the cursor position to 0, and also the end-of-stream and the error
+ * indicators of a #MIO stream.
+ * See also mio_seek() and mio_clearerr().
+ */
+void mio_rewind (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		rewind (mio->impl.file.fp);
+	else
+	{
+		mio->impl.mem.pos = 0;
+		mio->impl.mem.ungetch = EOF;
+		mio->impl.mem.eof = FALSE;
+		mio->impl.mem.error = FALSE;
+	}
+}
+
+/**
+ * mio_getpos:
+ * @mio: A #MIO stream
+ * @pos: (out): A #MIOPos object to fill-in
+ *
+ * Stores the current position (and maybe other informations about the stream
+ * state) of a #MIO stream in order to restore it later with mio_setpos(). This
+ * function behaves the same as fgetpos().
+ *
+ * Returns: 0 on success, -1 otherwise, in which case errno is set to indicate
+ *          the error.
+ */
+int mio_getpos (MIO *mio, MIOPos *pos)
+{
+	int rv = -1;
+
+	pos->type = mio->type;
+	if (mio->type == MIO_TYPE_FILE)
+		rv = fgetpos (mio->impl.file.fp, &pos->impl.file);
+	else
+	{
+		rv = -1;
+
+		if (mio->impl.mem.pos == (size_t)-1)
+		{
+			/* this happens if ungetc() was called at the start of the stream */
+#ifdef EIO
+			errno = EIO;
+#endif
+		}
+		else
+		{
+			pos->impl.mem = mio->impl.mem.pos;
+			rv = 0;
+		}
+	}
+#ifdef MIO_DEBUG
+	if (rv != -1)
+	{
+		pos->tag = mio;
+	}
+#endif /* MIO_DEBUG */
+
+	return rv;
+}
+
+/**
+ * mio_setpos:
+ * @mio: A #MIO object
+ * @pos: (in): A #MIOPos object filled-in by a previous call of mio_getpos() on
+ *       the same stream
+ *
+ * Restores the position and state indicators of a #MIO stream previously saved
+ * by mio_getpos().
+ *
+ * <warning><para>The #MIOPos object must have been initialized by a previous
+ * call to mio_getpos() on the same stream.</para></warning>
+ *
+ * Returns: 0 on success, -1 otherwise, in which case errno is set to indicate
+ *          the error.
+ */
+int mio_setpos (MIO *mio, MIOPos *pos)
+{
+	int rv = -1;
+
+#ifdef MIO_DEBUG
+	if (pos->tag != mio)
+	{
+		g_critical ("mio_setpos((MIO*)%p, (MIOPos*)%p): "
+					"Given MIOPos was not set by a previous call to mio_getpos() "
+					"on the same MIO object, which means there is a bug in "
+					"someone's code.",
+					(void *)mio, (void *)pos);
+		errno = EINVAL;
+		return -1;
+	}
+#endif /* MIO_DEBUG */
+
+	if (mio->type == MIO_TYPE_FILE)
+		rv = fsetpos (mio->impl.file.fp, &pos->impl.file);
+	else
+	{
+		rv = -1;
+
+		if (pos->impl.mem > mio->impl.mem.size)
+			errno = EINVAL;
+		else
+		{
+			mio->impl.mem.ungetch = EOF;
+			mio->impl.mem.pos = pos->impl.mem;
+			rv = 0;
+		}
+	}
+
+	return rv;
+}
+
+/**
+ * mio_flush:
+ * @mio: A #MIO object
+ *
+ * Forces a write of all user-space buffered data for the given output or update
+ * stream via the stream's underlying write function. Only applicable when using
+ * FILE back-end.
+ *
+ * Returns: 0 on success, error code otherwise.
+ */
+int mio_flush (MIO *mio)
+{
+	if (mio->type == MIO_TYPE_FILE)
+		return fflush (mio->impl.file.fp);
+	return 0;
+}


Modified: ctags/main/mio.h
178 lines changed, 178 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,178 @@
+/*
+ *  MIO, an I/O abstraction layer replicating C file I/O API.
+ *  Copyright (C) 2010  Colomban Wendling <ban at herbesfolles.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#ifndef MIO_H
+#define MIO_H
+
+#include "general.h"  /* must always come first */
+
+#include <stdio.h>
+#include <stdarg.h>
+
+
+/**
+ * MIOType:
+ * @MIO_TYPE_FILE: #MIO object works on a file
+ * @MIO_TYPE_MEMORY: #MIO object works in-memory
+ *
+ * Existing implementations.
+ */
+enum _MIOType {
+	MIO_TYPE_FILE,
+	MIO_TYPE_MEMORY
+};
+
+typedef enum _MIOType   MIOType;
+typedef struct _MIO     MIO;
+typedef struct _MIOPos  MIOPos;
+
+/**
+ * MIOReallocFunc:
+ * @ptr: Pointer to the memory to resize
+ * @size: New size of the memory pointed by @ptr
+ *
+ * A function following the realloc() semantic.
+ *
+ * Returns: A pointer to the start of the new memory, or %NULL on failure.
+ */
+typedef void *(* MIOReallocFunc) (void * ptr, size_t size);
+
+/**
+ * MIOFOpenFunc:
+ * @filename: The filename to open
+ * @mode: fopen() modes for opening @filename
+ *
+ * A function following the fclose() semantic, used to close a #FILE
+ * object.
+ *
+ * Returns: A new #FILE object, or %NULL on failure
+ */
+typedef FILE *(* MIOFOpenFunc) (const char *filename, const char *mode);
+
+/**
+ * MIOFCloseFunc:
+ * @fp: An opened #FILE object
+ *
+ * A function following the fclose() semantic, used to close a #FILE
+ * object.
+ *
+ * Returns: 0 on success, EOF otherwise.
+ */
+typedef int (* MIOFCloseFunc) (FILE *fp);
+
+/**
+ * MIODestroyNotify:
+ * @data: Data element being destroyed
+ *
+ * Specifies the type of function which is called when a data element is
+ * destroyed. It is passed the pointer to the data element and should free any
+ * memory and resources allocated for it.
+ */
+typedef void (*MIODestroyNotify) (void *data);
+
+/**
+ * MIOPos:
+ *
+ * An object representing the state of a #MIO stream. This object can be
+ * statically allocated but all its fields are private and should not be
+ * accessed directly.
+ */
+struct _MIOPos {
+	/*< private >*/
+	unsigned int type;
+#ifdef MIO_DEBUG
+	void *tag;
+#endif
+	union {
+		fpos_t file;
+		size_t mem;
+	} impl;
+};
+
+/**
+ * MIO:
+ *
+ * An object representing a #MIO stream. No assumptions should be made about
+ * what compose this object, and none of its fields should be accessed directly.
+ */
+struct _MIO {
+	/*< private >*/
+	unsigned int type;
+	union {
+		struct {
+			FILE *fp;
+			MIOFCloseFunc close_func;
+		} file;
+		struct {
+			unsigned char *buf;
+			int ungetch;
+			size_t pos;
+			size_t size;
+			size_t allocated_size;
+			MIOReallocFunc realloc_func;
+			MIODestroyNotify free_func;
+			boolean error;
+			boolean eof;
+		} mem;
+	} impl;
+};
+
+
+MIO *mio_new_file (const char *filename, const char *mode);
+MIO *mio_new_file_full (const char *filename,
+						const char *mode,
+						MIOFOpenFunc open_func,
+						MIOFCloseFunc close_func);
+MIO *mio_new_fp (FILE *fp, MIOFCloseFunc close_func);
+MIO *mio_new_memory (unsigned char *data,
+					 size_t size,
+					 MIOReallocFunc realloc_func,
+					 MIODestroyNotify free_func);
+int mio_free (MIO *mio);
+FILE *mio_file_get_fp (MIO *mio);
+unsigned char *mio_memory_get_data (MIO *mio, size_t *size);
+size_t mio_read (MIO *mio,
+				 void *ptr,
+				 size_t size,
+				 size_t nmemb);
+size_t mio_write (MIO *mio,
+				  const void *ptr,
+				  size_t size,
+				  size_t nmemb);
+int mio_getc (MIO *mio);
+char *mio_gets (MIO *mio, char *s, size_t size);
+int mio_ungetc (MIO *mio, int ch);
+int mio_putc (MIO *mio, int c);
+int mio_puts (MIO *mio, const char *s);
+
+int mio_vprintf (MIO *mio, const char *format, va_list ap) PRINTF (2, 0);
+int mio_printf (MIO *mio, const char *format, ...) PRINTF (2, 3);
+
+void mio_clearerr (MIO *mio);
+int mio_eof (MIO *mio);
+int mio_error (MIO *mio);
+int mio_seek (MIO *mio, long offset, int whence);
+long mio_tell (MIO *mio);
+void mio_rewind (MIO *mio);
+int mio_getpos (MIO *mio, MIOPos *pos);
+int mio_setpos (MIO *mio, MIOPos *pos);
+int mio_flush (MIO *mio);
+
+#endif /* MIO_H */


Modified: ctags/main/nestlevel.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/nestlevel.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/options.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/options.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/parse.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -15,9 +15,9 @@
 #include "general.h"	/* must always come first */
 
 #include <string.h>
-#include <mio/mio.h>
 
 
+#include "mio.h"
 #include "entry.h"
 #include "main.h"
 #define OPTION_WRITE


Modified: ctags/main/parse.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/parsers.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -14,7 +14,7 @@
 #define _PARSERS_H
 
 /* Add the name of any new parser definition function here */
-/* keep tagmanager/src/tm_parser.h in sync */
+/* keep src/tagmanager/tm_parser.h in sync */
 #define PARSER_LIST \
     CParser, \
     CppParser, \


Modified: ctags/main/read.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/read.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -17,8 +17,8 @@
 
 #include <stdio.h>
 #include <ctype.h>
-#include <mio/mio.h>
 
+#include "mio.h"
 #include "parse.h"
 #include "vstring.h"
 


Modified: ctags/main/sort.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/sort.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/strlist.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/strlist.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/vstring.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/main/vstring.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/abaqus.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/abc.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/actionscript.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/asciidoc.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/asm.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/basic.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/c.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -16,8 +16,8 @@
 
 #include <string.h>
 #include <setjmp.h>
-#include <mio/mio.h>
 
+#include "mio.h"
 #include "entry.h"
 #include "get.h"
 #include "keyword.h"


Modified: ctags/parsers/cobol.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/conf.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/css.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/diff.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/docbook.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/erlang.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/fortran.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -17,8 +17,8 @@
 #include <limits.h>
 #include <ctype.h>	/* to define tolower () */
 #include <setjmp.h>
-#include <mio/mio.h>
 
+#include "mio.h"
 #include "entry.h"
 #include "keyword.h"
 #include "main.h"


Modified: ctags/parsers/go.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/haskell.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/haxe.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/html.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/jscript.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -19,11 +19,11 @@
 #include "general.h"	/* must always come first */
 #include <ctype.h>	/* to define isalpha () */
 #include <string.h>
-#include <mio/mio.h>
 #ifdef DEBUG
 #include <stdio.h>
 #endif
 
+#include "mio.h"
 #include "keyword.h"
 #include "parse.h"
 #include "read.h"


Modified: ctags/parsers/json.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/latex.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/lua.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/make.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/markdown.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/matlab.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/nsis.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/objc.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/pascal.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/perl.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/php.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/powershell.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/python.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/r.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/rest.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/ruby.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/rust.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/sh.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/sql.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/tcl.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/txt2tags.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/verilog.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: ctags/parsers/vhdl.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: doc/Doxyfile.in
12 lines changed, 6 insertions(+), 6 deletions(-)
===================================================================
@@ -794,12 +794,12 @@ INPUT                  = @top_srcdir@/src/ \
                          @top_srcdir@/doc/stash-example.c \
                          @top_srcdir@/doc/stash-gui-example.c \
                          @top_srcdir@/plugins/geanyplugin.h \
-                         @top_srcdir@/tagmanager/src/tm_source_file.c \
-                         @top_srcdir@/tagmanager/src/tm_source_file.h \
-                         @top_srcdir@/tagmanager/src/tm_workspace.c \
-                         @top_srcdir@/tagmanager/src/tm_workspace.h \
-                         @top_srcdir@/tagmanager/src/tm_tag.h \
-                         @top_srcdir@/tagmanager/src/tm_parser.h
+                         @top_srcdir@/src/tagmanager/tm_source_file.c \
+                         @top_srcdir@/src/tagmanager/tm_source_file.h \
+                         @top_srcdir@/src/tagmanager/tm_workspace.c \
+                         @top_srcdir@/src/tagmanager/tm_workspace.h \
+                         @top_srcdir@/src/tagmanager/tm_tag.h \
+                         @top_srcdir@/src/tagmanager/tm_parser.h
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses


Modified: doc/Makefile.am
11 lines changed, 5 insertions(+), 6 deletions(-)
===================================================================
@@ -41,8 +41,7 @@ EXTRA_DIST = \
 	geany.html \
 	geany.css \
 	geany.txt \
-	geany.1 \
-	makefile.win32
+	geany.1
 
 # HTML user manual and hacking file
 if WITH_RST2HTML
@@ -99,10 +98,10 @@ doxygen_dependencies = \
 	$(doxygen_sources) \
 	$(top_srcdir)/src/*.[ch] \
 	$(top_srcdir)/plugins/geanyplugin.h \
-	$(top_srcdir)/tagmanager/src/tm_source_file.[ch] \
-	$(top_srcdir)/tagmanager/src/tm_workspace.[ch] \
-	$(top_srcdir)/tagmanager/src/tm_tag.h \
-	$(top_srcdir)/tagmanager/src/tm_parser.h
+	$(top_srcdir)/src/tagmanager/tm_source_file.[ch] \
+	$(top_srcdir)/src/tagmanager/tm_workspace.[ch] \
+	$(top_srcdir)/src/tagmanager/tm_tag.h \
+	$(top_srcdir)/src/tagmanager/tm_parser.h
 
 Doxyfile.stamp: Doxyfile $(doxygen_dependencies)
 	$(AM_V_GEN)$(DOXYGEN) Doxyfile && echo "" > $@


Modified: doc/makefile.win32
36 lines changed, 0 insertions(+), 36 deletions(-)
===================================================================
@@ -1,36 +0,0 @@
-# Optional documentation generation.
-# localwin32.mk is an optional file to override make variables.
-# Use localwin32.mk instead of editing variables as it is included in sub
-# makefiles.
-# Use localwin32.mk to override RST2HTML, DOXYGEN
-
-RST2HTML=python rst2html.py
-SED=sed
-DOXYGEN=doxygen
-CP = copy /y
--include ../localwin32.mk
-
-ifdef MSYS
-CP = cp
-endif
-
-# no PDF rule yet
-all: html api-doc
-
-html: geany.html hacking.html
-
-geany.html: geany.txt geany.css
-	$(RST2HTML) -stg --stylesheet=geany.css $< $@
-
-hacking.html: ../HACKING geany.css
-	$(RST2HTML) -stg --stylesheet=geany.css $< $@
-
-# FIXME: we should also replace @VERSION@
-Doxyfile: Doxyfile.in
-	$(CP) $< $@
-	$(SED) -i 's/@top_builddir@/../g' $@
-	$(SED) -i 's/@top_srcdir@/../g' $@
-
-api-doc: Doxyfile
-	$(DOXYGEN)
-


Modified: doc/making-a-release
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -8,8 +8,7 @@ and summarize the interesting ones.  Use `git log --author='name'`
 to filter commits by a particular developer name.
 
 Ensure version numbers are all updated in:
-	configure.ac geany_private.rc geany.exe.manifest
-	win32-config.h doc/geany.txt
+	configure.ac geany_private.rc geany.exe.manifest doc/geany.txt
 Ensure release date is updated in:
 	NEWS doc/geany.txt doc/geany.1.in
 Check GEANY_CODENAME is set in src/geany.h.


Modified: makefile.win32
71 lines changed, 0 insertions(+), 71 deletions(-)
===================================================================
@@ -1,71 +0,0 @@
-# See http://www.geany.org/Support/BuildingOnWin32
-# Running make creates config.h then calls the sub makefiles.
-#
-# Other targets are:
-#	clean: clean all generated files
-#	install: install to DESTDIR
-#
-# localwin32.mk is an optional file to override make variables.
-# Use localwin32.mk instead of editing variables as it is included in sub
-# makefiles.
-# For MSYS set MSYS=1.
-# By default this should work in a Windows command prompt (cmd.exe).
-
-WINDRES = windres.exe
-CC = gcc
-CXX = g++
-CP = copy /y
-RM = del
-MKDIR = mkdir
-# $/ is used as a portable directory separator
-# strip is used to prevent line wrap
-/ := $(strip \)
-DESTDIR = C:/Program Files/Geany
--include localwin32.mk
-
-ifdef MSYS
-CP = cp
-RM = rm -f
-/ = /
-endif
-
-all: config.h
-	$(MAKE) -C tagmanager/ctags -f makefile.win32
-	$(MAKE) -C tagmanager/mio -f makefile.win32
-	$(MAKE) -C tagmanager/src -f makefile.win32
-	$(MAKE) -C scintilla/gtk -f makefile.win32
-	$(MAKE) -C plugins -f makefile.win32
-	$(MAKE) -C src -f makefile.win32
-
-config.h: win32-config.h
-	$(CP) $< $@
-
-# used by src/makefile.win32 to avoid del ../file which is an error
-clean-local:
-	-$(RM) geany_private.res geany.exe
-
-clean:
-	$(MAKE) -C tagmanager/ctags -f makefile.win32 clean
-	$(MAKE) -C tagmanager/mio -f makefile.win32 clean
-	$(MAKE) -C tagmanager/src -f makefile.win32 clean
-	$(MAKE) -C scintilla/gtk -f makefile.win32 clean
-	$(MAKE) -C plugins -f makefile.win32 clean
-	$(MAKE) -C src -f makefile.win32 clean
-
-.PHONY: all clean clean-local install
-
-# likely requires admin privileges
-# mkdir output is ignored in case dir exists
-# 'copy' seems to only accept / in the destination
-install:
-	-$(MKDIR) "$(DESTDIR)"
-	-$(MKDIR) "$(DESTDIR)/bin"
-	$(CP) geany.exe "$(DESTDIR)/bin"
-	-$(MKDIR) "$(DESTDIR)/lib"
-	$(CP) plugins$/*.dll "$(DESTDIR)/lib"
-	-$(MKDIR) "$(DESTDIR)/data"
-ifdef MSYS
-	cp -r data "$(DESTDIR)"
-else
-	xcopy /s /y data "$(DESTDIR)/data"
-endif


Modified: plugins/Makefile.am
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -1,7 +1,6 @@
 # Adapted from Pidgin's plugins/Makefile.am, thanks
 
 EXTRA_DIST = \
-	makefile.win32 \
 	demoproxytest.px
 
 plugindir = $(libdir)/geany
@@ -74,7 +73,7 @@ endif
 AM_CPPFLAGS += \
 	-DGTK \
 	-I$(top_srcdir)/src \
-	-I$(top_srcdir)/tagmanager/src \
+	-I$(top_srcdir)/src/tagmanager \
 	-I$(top_srcdir)/scintilla/include \
 	$(GTK_CFLAGS) \
 	$(PLUGIN_CFLAGS)


Modified: plugins/makefile.win32
80 lines changed, 0 insertions(+), 80 deletions(-)
===================================================================
@@ -1,80 +0,0 @@
-# Adapted from Pidgin's plugins/Makefile.am, thanks
-
-CC = gcc
-CXX = g++
-PREFIX = C:/libs
-RM = del
--include ../localwin32.mk
-
-ifdef MSYS
-RM = rm -f
-endif
-
-.SUFFIXES: .c .o .dll
-
-GTK_INCLUDES= \
-	-I$(PREFIX)/include/gtk-2.0 \
-	-I$(PREFIX)/lib/gtk-2.0/include \
-	-I$(PREFIX)/include/atk-1.0 \
-	-I$(PREFIX)/include/cairo \
-	-I$(PREFIX)/include/gdk-pixbuf-2.0 \
-	-I$(PREFIX)/include/pango-1.0 \
-	-I$(PREFIX)/include/glib-2.0 \
-	-I$(PREFIX)/lib/glib-2.0/include \
-	-I$(PREFIX)/include \
-	-I$(PREFIX)/include/gettext
-
-INCLUDEDIRS=  -I.. \
-              -I../src \
-              -I../scintilla/include \
-              -I../tagmanager/src \
-              $(GTK_INCLUDES)
-
-ALL_GTK_LIBS= \
-	-L"$(PREFIX)/lib" \
-	-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \
-	-lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
-
-CBASEFLAGS=-Wall -pipe -mms-bitfields -DHAVE_CONFIG_H
-ifdef DEBUG
-CFLAGS=-O0 -g $(CBASEFLAGS)
-else
-CFLAGS=-O2 $(CBASEFLAGS)
-endif
-CFLAGS += -DGTK
-
-ifndef GTK210
-ALL_GTK_LIBS += -liconv
-endif
-
-.PHONY: all clean plugins
-
-all: plugins
-
-.c.o:
-	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDEDIRS) -o $@ -c $<
-
-.o.dll:
-	$(CC) -shared $< $(ALL_GTK_LIBS) $(DLL_LD_FLAGS) -o $@
-
-plugins: \
-		htmlchars.dll \
-		demoplugin.dll \
-		classbuilder.dll \
-		export.dll \
-		saveactions.dll \
-		splitwindow.dll \
-		filebrowser.dll
-
-
-clean:
-	-$(RM) deps.mak *.o *.dll
-
-deps.mak:
-	$(CC) -MM $(CFLAGS) $(DEFINES) $(INCLUDEDIRS) *.c >deps.mak
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak
-
-..\localwin32.mk:
-	echo # Set local variables here >$@


Modified: scintilla/Makefile.am
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -153,5 +153,4 @@ marshallers: gtk/scintilla-marshal.list
 	glib-genmarshal --prefix scintilla_marshal gtk/scintilla-marshal.list --header > gtk/scintilla-marshal.h
 	glib-genmarshal --prefix scintilla_marshal gtk/scintilla-marshal.list --body > gtk/scintilla-marshal.c
 
-EXTRA_DIST=gtk/scintilla-marshal.list License.txt README version.txt \
-	gtk/makefile.win32
+EXTRA_DIST=gtk/scintilla-marshal.list License.txt README version.txt


Modified: scintilla/gtk/makefile.win32
80 lines changed, 0 insertions(+), 80 deletions(-)
===================================================================
@@ -1,80 +0,0 @@
-# Make file for Scintilla on Linux or compatible OS
-# Copyright 1998-2010 by Neil Hodgson <neilh at scintilla.org>
-# The License.txt file describes the conditions under which this software may be distributed.
-# This makefile assumes GCC 4.3 is used and changes will be needed to use other compilers.
-# GNU make does not like \r\n line endings so should be saved to CVS in binary form.
-# Builds for GTK+ 2 and no longer supports GTK+ 1.
-# Also works with ming32-make on Windows.
-
-.SUFFIXES: .cxx .c .o .h .a
-CXX = g++
-CC = gcc
-AR = ar
-
-ifdef GTK3
-GTKVERSION=gtk+-3.0
-else
-GTKVERSION=gtk+-2.0
-endif
-
-RANLIB = ranlib
-PREFIX = C:/libs
-RM = del
--include ../../localwin32.mk
-
-ifdef MSYS
-RM = rm -f
-endif
-
-COMPLIB=../scintilla.a
-
-vpath %.h ../src ../include ../lexlib
-vpath %.cxx ../src ../lexlib ../lexers
-
-INCLUDEDIRS=-I ../include -I ../src -I ../lexlib
-CXXBASEFLAGS=-Wall -Wno-missing-braces -Wno-char-subscripts \
-	-DGTK -DSCI_LEXER -DNO_CXX11_REGEX \
-	$(INCLUDEDIRS) \
-	-DGEANY_EXPORT_SYMBOL="__declspec(dllexport)" \
-	-DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL
-
-
-ifdef DEBUG
-CTFLAGS=-DDEBUG -g -O0 $(CXXBASEFLAGS)
-else
-CTFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS)
-endif
-
-CFLAGS:=$(CTFLAGS)
-CXXTFLAGS:=--std=c++0x $(CTFLAGS) $(REFLAGS)
-
-CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
-MARSHALLER=scintilla-marshal.o
-
-.cxx.o:
-	$(CXX) $(CONFIGFLAGS) $(CXXTFLAGS) $(CXXFLAGS) -c $<
-.c.o:
-	$(CC) $(CONFIGFLAGS) $(CFLAGS) -w -c $<
-
-LEXOBJS:=$(addsuffix .o,$(basename $(notdir $(wildcard ../lexers/Lex*.cxx))))
-
-all: $(COMPLIB)
-
-clean:
-	-$(RM) deps.mak *.o $(COMPLIB) *.plist
-
-deps.mak:
-	$(CXX) -MM $(CONFIGFLAGS) $(CXXTFLAGS) *.cxx ../src/*.cxx ../lexlib/*.cxx ../lexers/*.cxx >deps.mak
-
-$(COMPLIB): Accessor.o CharacterSet.o LexerBase.o LexerModule.o LexerSimple.o StyleContext.o WordList.o \
-	CharClassify.o Decoration.o Document.o PerLine.o Catalogue.o CallTip.o CaseConvert.o CaseFolder.o \
-	ScintillaBase.o ContractionState.o EditModel.o Editor.o EditView.o ExternalLexer.o MarginView.o \
-	PropSetSimple.o PlatGTK.o \
-	KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o CellBuffer.o CharacterCategory.o ViewStyle.o \
-	RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o XPM.o \
-	$(MARSHALLER) $(LEXOBJS)
-	$(AR) rc $@ $^
-	$(RANLIB) $@
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak


Modified: scripts/create_php_tags.py
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -18,13 +18,13 @@
 UPSTREAM_TAG_DEFINITION = 'http://doc.php.net/downloads/json/php_manual_en.json'
 PROTOTYPE_RE = r'^(?P<return_type>.*) {tag_name}(?P<arg_list>\(.*\))$'
 
-# (from tagmanager/src/tm_tag.c:90)
+# (from src/tagmanager/tm_tag.c:90)
 TA_NAME = 200
 TA_TYPE = 204
 TA_ARGLIST = 205
 TA_SCOPE = 206
 TA_VARTYPE = 207
-# TMTagType (tagmanager/src/tm_tag.h:49)
+# TMTagType (src/tagmanager/tm_tag.h:49)
 TYPE_CLASS = 1
 TYPE_FUNCTION = 16
 TYPE_MEMBER = 64


Modified: src/Makefile.am
8 lines changed, 4 insertions(+), 4 deletions(-)
===================================================================
@@ -1,5 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
+SUBDIRS = tagmanager
 
 EXTRA_DIST = \
 	gb.c \
@@ -9,13 +10,12 @@ EXTRA_DIST = \
 	filetypesprivate.h \
 	keybindingsprivate.h \
 	pluginprivate.h \
-	projectprivate.h \
-	makefile.win32
+	projectprivate.h
 
 AM_CPPFLAGS = \
 	-I$(top_srcdir) \
 	-I$(top_srcdir)/scintilla/include \
-	-I$(top_srcdir)/tagmanager/src \
+	-I$(srcdir)/tagmanager \
 	-DGTK \
 	-DGEANY_PRIVATE \
 	-DG_LOG_DOMAIN=\""Geany"\" \
@@ -120,7 +120,7 @@ libgeany_la_LDFLAGS = @LIBGEANY_LDFLAGS@
 
 libgeany_la_LIBADD = \
 	$(top_builddir)/scintilla/libscintilla.la \
-	$(top_builddir)/tagmanager/src/libtagmanager.la \
+	$(builddir)/tagmanager/libtagmanager.la \
 	@GTK_LIBS@ \
 	@GTHREAD_LIBS@ \
 	$(MAC_INTEGRATION_LIBS) \


Modified: src/filetypes.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -142,7 +142,7 @@ typedef struct GeanyFiletype
 {
 	GeanyFiletypeID	  id;				/**< Index in @ref filetypes. */
 	/* Represents the TMParserType of tagmanager (see the table
-	 * in tagmanager/src/tm_parser.h). */
+	 * in src/tagmanager/tm_parser.h). */
 	TMParserType	  lang;
 	/** Untranslated short name, such as "C", "None".
 	 * Must not be translated as it's used for hash table lookups - use


Modified: src/makefile.win32
99 lines changed, 0 insertions(+), 99 deletions(-)
===================================================================
@@ -1,99 +0,0 @@
-# Note: PACKAGE_DATA_DIR and PACKAGE_LOCALE_DIR are no longer used on Windows.
-
-DEFINES = -DHAVE_CONFIG_H \
-	-DGEANY_PRIVATE \
-	-DGEANY_DATADIR=\"data\" \
-	-DGEANY_LOCALEDIR=\"\" \
-	-DGEANY_LIBDIR=\"\" \
-	-DGEANY_PREFIX=\"\" \
-	-DGTK \
-	-DGEANY_EXPORT_SYMBOL="__declspec(dllexport)" \
-	-DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL
-
-.SUFFIXES: .c .o .h .a
-WINDRES = windres.exe
-CC = gcc
-CXX = g++
-RES = ../geany_private.res
-TARGET = ../geany.exe
-PREFIX = C:/libs
-RM = del
--include ../localwin32.mk
-
-ifdef MSYS
-RM = rm -f
-endif
-
-GTK_INCLUDES= \
-	-I$(PREFIX)/include/gtk-2.0 \
-	-I$(PREFIX)/lib/gtk-2.0/include \
-	-I$(PREFIX)/include/atk-1.0 \
-	-I$(PREFIX)/include/cairo \
-	-I$(PREFIX)/include/gdk-pixbuf-2.0 \
-	-I$(PREFIX)/include/pango-1.0 \
-	-I$(PREFIX)/include/glib-2.0 \
-	-I$(PREFIX)/lib/glib-2.0/include \
-	-I$(PREFIX)/include \
-	-I$(PREFIX)/include/gettext
-
-INCLUDEDIRS=  -I.. \
-              -I../scintilla/include \
-              -I../tagmanager/mio \
-              -I../tagmanager/src \
-              $(GTK_INCLUDES)
-
-ALL_GTK_LIBS= \
-	-L"$(PREFIX)/lib" \
-	-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \
-	-lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lgthread-2.0 -lintl \
-	-lcairo -lpangocairo-1.0 -lgio-2.0
-	# these things are for GTK >= 2.8
-	# (should be same as with MSYS: pkg-config --libs gtk+-2.0 gthread-2.0)
-	#"$(PREFIX)/lib/libcairo.dll.a" \
-	#"$(PREFIX)/lib/asprintf.lib" \
-	#"$(PREFIX)/lib/charset.lib" \
-
-WIN_LIBS=-mwindows -lole32 -luuid -lwsock32
-
-CBASEFLAGS=-Wall -pipe -mms-bitfields $(DEFINES) $(INCLUDEDIRS)
-ifdef DEBUG
-CFLAGS=-O0 -g $(CBASEFLAGS)
-DEFINES += -DGEANY_DEBUG
-else
-CFLAGS=-O2 $(CBASEFLAGS)
-endif
-
-OBJS =	about.o build.o callbacks.o dialogs.o document.o editor.o encodings.o filetypes.o \
-		geanyentryaction.o geanymenubuttonaction.o geanyobject.o geanywraplabel.o highlighting.o \
-		keybindings.o keyfile.o log.o main.o msgwindow.o navqueue.o notebook.o \
-		plugins.o pluginutils.o prefs.o printing.o project.o sciwrappers.o search.o \
-		socket.o spawn.o stash.o symbols.o templates.o toolbar.o tools.o sidebar.o \
-		ui_utils.o utils.o win32.o
-
-.c.o:
-	$(CC) $(CFLAGS) -c $<
-
-all: $(TARGET)
-
-$(RES): ../geany_private.rc ../icons/geany.ico
-	$(WINDRES) -i $< --input-format=rc -o $@ -O coff
-
-# this calls parent clean-local target because del ../file won't work
-clean:
-	-$(RM) deps.mak *.o
-	$(MAKE) -C .. -f makefile.win32 clean-local
-
-STLIBS = ../scintilla/scintilla.a ../tagmanager/ctags/ctags.a \
-	../tagmanager/mio/mio.a ../tagmanager/src/tagmanager.a
-
-$(TARGET): $(OBJS) $(RES) $(STLIBS)
-	$(CXX) $(OBJS) $(RES) -o $(TARGET) $(STLIBS) $(ALL_GTK_LIBS) $(WIN_LIBS)
-
-deps.mak:
-	$(CC) -MM  $(CFLAGS) *.c >deps.mak
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak
-
-..\localwin32.mk:
-	echo # Set local variables here >$@


Modified: src/tagmanager/Makefile.am
8 lines changed, 2 insertions(+), 6 deletions(-)
===================================================================
@@ -1,16 +1,12 @@
 AM_CPPFLAGS = \
 	-I$(srcdir) \
-	-I$(srcdir)/.. \
-	-I$(srcdir)/../ctags \
+	-I$(top_srcdir)/ctags/main \
 	-DGEANY_PRIVATE \
 	-DG_LOG_DOMAIN=\"Tagmanager\"
 AM_CFLAGS = \
 	$(GTK_CFLAGS) \
 	@LIBGEANY_CFLAGS@
 
-EXTRA_DIST = \
-	makefile.win32
-
 noinst_LTLIBRARIES = libtagmanager.la
 
 tagmanager_includedir = $(includedir)/geany/tagmanager
@@ -33,4 +29,4 @@ libtagmanager_la_SOURCES =\
 	tm_ctags_wrappers.h \
 	tm_ctags_wrappers.c
 
-libtagmanager_la_LIBADD = ../ctags/libctags.la $(GTK_LIBS)
+libtagmanager_la_LIBADD = $(top_builddir)/ctags/libctags.la $(GTK_LIBS)


Modified: src/tagmanager/tm_ctags_wrappers.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_ctags_wrappers.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_parser.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_parser.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_source_file.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_source_file.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_tag.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_tag.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_workspace.c
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: src/tagmanager/tm_workspace.h
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: tagmanager/Makefile.am
3 lines changed, 0 insertions(+), 3 deletions(-)
===================================================================
@@ -1,3 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS = mio ctags src


Modified: tagmanager/ctags/Makefile.am
89 lines changed, 0 insertions(+), 89 deletions(-)
===================================================================
@@ -1,89 +0,0 @@
-AM_CPPFLAGS = \
-	-I$(srcdir) \
-	-I$(srcdir)/.. \
-	-DG_LOG_DOMAIN=\"CTags\"
-AM_CFLAGS = \
-	$(GTK_CFLAGS) \
-	@LIBGEANY_CFLAGS@
-
-EXTRA_DIST = \
-	makefile.win32
-
-noinst_LTLIBRARIES = libctags.la
-
-libctags_la_LIBADD = ../mio/libmio.la
-
-parsers = \
-	abaqus.c \
-	abc.c \
-	actionscript.c \
-	asciidoc.c \
-	asm.c \
-	basic.c \
-	c.c \
-	cobol.c \
-	conf.c \
-	css.c \
-	diff.c \
-	docbook.c \
-	erlang.c \
-	fortran.c \
-	go.c \
-	haskell.c \
-	haxe.c \
-	html.c \
-	js.c \
-	json.c \
-	latex.c \
-	lregex.c \
-	lua.c \
-	make.c \
-	markdown.c \
-	matlab.c \
-	nsis.c \
-	objc.c \
-	pascal.c \
-	perl.c \
-	php.c \
-	powershell.c \
-	python.c \
-	r.c \
-	rest.c \
-	ruby.c \
-	rust.c \
-	sh.c \
-	sql.c \
-	tcl.c \
-	txt2tags.c \
-	verilog.c \
-	vhdl.c
-
-libctags_la_SOURCES = \
-	args.c \
-	args.h \
-	ctags.c \
-	ctags.h \
-	entry.c \
-	entry.h \
-	general.h \
-	get.c \
-	get.h \
-	keyword.c \
-	keyword.h \
-	main.h \
-	nestlevel.c \
-	nestlevel.h \
-	options.c \
-	options.h \
-	parse.c \
-	parse.h \
-	parsers.h \
-	read.c \
-	read.h \
-	sort.c \
-	sort.h \
-	strlist.c \
-	strlist.h \
-	vstring.c \
-	vstring.h \
-	$(parsers)


Modified: tagmanager/ctags/makefile.win32
60 lines changed, 0 insertions(+), 60 deletions(-)
===================================================================
@@ -1,60 +0,0 @@
-
-.SUFFIXES: .cxx .c .o .h .a
-CC = gcc
-AR = ar
-RANLIB = ranlib
-PREFIX = C:/libs
-RM = del
--include ../../localwin32.mk
-
-ifdef MSYS
-RM = rm -f
-endif
-
-COMPLIB=ctags.a
-
-REGEX_DEFINES = -DHAVE_REGCOMP -DSTDC_HEADERS=1
-
-GTK_INCLUDES= \
-	-I$(PREFIX)/include/gtk-2.0 \
-	-I$(PREFIX)/lib/gtk-2.0/include \
-	-I$(PREFIX)/include/atk-1.0 \
-	-I$(PREFIX)/include/cairo \
-	-I$(PREFIX)/include/gdk-pixbuf-2.0 \
-	-I$(PREFIX)/include/pango-1.0 \
-	-I$(PREFIX)/include/glib-2.0 \
-	-I$(PREFIX)/lib/glib-2.0/include \
-	-I$(PREFIX)/include \
-	-I$(PREFIX)/include/gettext
-
-INCLUDEDIRS=-I ../ -I . $(GTK_INCLUDES)
-
-CBASEFLAGS=-Wall -pipe -mms-bitfields -DPACKAGE=\"geany\" -Wno-missing-braces -Wno-char-subscripts $(INCLUDEDIRS)
-ifdef DEBUG
-CFLAGS= -O0 -g $(CBASEFLAGS)
-else
-CFLAGS=-O2 $(CBASEFLAGS)
-endif
-
-.c.o:
-	$(CC) $(REGEX_DEFINES) $(CFLAGS) -c $<
-
-all: $(COMPLIB)
-
-clean:
-	-$(RM) deps.mak *.o $(COMPLIB)
-
-$(COMPLIB): abaqus.o abc.o args.o c.o cobol.o erlang.o fortran.o make.o conf.o pascal.o perl.o php.o diff.o vhdl.o verilog.o lua.o js.o json.o \
-actionscript.o nsis.o objc.o powershell.c \
-haskell.o haxe.o html.o python.o lregex.o asciidoc.o rest.o sh.o ctags.o entry.o get.o keyword.o nestlevel.o \
-options.o \
-parse.o basic.o read.o sort.o strlist.o latex.o markdown.o matlab.o docbook.o tcl.o ruby.o rust.o asm.o sql.o txt2tags.o css.o \
-vstring.o r.o go.o
-	$(AR) rc $@ $^
-	$(RANLIB) $@
-
-deps.mak:
-	$(CC) -MM  $(CFLAGS) *.c >deps.mak
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak


Modified: tagmanager/mio/COPYING
339 lines changed, 0 insertions(+), 339 deletions(-)
===================================================================
@@ -1,339 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.


Modified: tagmanager/mio/Makefile.am
13 lines changed, 0 insertions(+), 13 deletions(-)
===================================================================
@@ -1,13 +0,0 @@
-noinst_LTLIBRARIES = libmio.la
-
-AM_CPPFLAGS = -DG_LOG_DOMAIN=\"MIO\" #-DMIO_DEBUG
-AM_CFLAGS   = $(GTK_CFLAGS) @LIBGEANY_CFLAGS@
-
-libmio_la_LIBADD = $(GTK_LIBS)
-libmio_la_SOURCES = mio.c
-
-EXTRA_DIST = \
-	mio.h \
-	mio-file.c \
-	mio-memory.c \
-	makefile.win32


Modified: tagmanager/mio/README
3 lines changed, 0 insertions(+), 3 deletions(-)
===================================================================
@@ -1,3 +0,0 @@
-These files are from the MIO library, http://gitorious.org/mio
-
-See COPYING for the MIO license.


Modified: tagmanager/mio/makefile.win32
53 lines changed, 0 insertions(+), 53 deletions(-)
===================================================================
@@ -1,53 +0,0 @@
-
-.SUFFIXES: .cxx .c .o .h .a
-CC = gcc
-AR = ar
-RANLIB = ranlib
-PREFIX = C:/libs
-RM = del
--include ../../localwin32.mk
-
-ifdef MSYS
-RM = rm -f
-endif
-
-COMPLIB=mio.a
-
-GTK_INCLUDES= \
-	-I$(PREFIX)/include/gtk-2.0 \
-	-I$(PREFIX)/lib/gtk-2.0/include \
-	-I$(PREFIX)/include/atk-1.0 \
-	-I$(PREFIX)/include/cairo \
-	-I$(PREFIX)/include/gdk-pixbuf-2.0 \
-	-I$(PREFIX)/include/pango-1.0 \
-	-I$(PREFIX)/include/glib-2.0 \
-	-I$(PREFIX)/lib/glib-2.0/include \
-	-I$(PREFIX)/include \
-	-I$(PREFIX)/include/gettext
-
-INCLUDEDIRS=-I include $(GTK_INCLUDES)
-
-CBASEFLAGS=-Wall -pipe -mms-bitfields -DPACKAGE=\"geany\" -Wno-missing-braces -Wno-char-subscripts $(INCLUDEDIRS)
-ifdef DEBUG
-CFLAGS= -O0 -g $(CBASEFLAGS)
-else
-CFLAGS=-O2 $(CBASEFLAGS)
-endif
-
-.c.o:
-	$(CC) $(CFLAGS) -c $<
-
-all: $(COMPLIB)
-
-clean:
-	-$(RM) deps.mak *.o $(COMPLIB)
-
-$(COMPLIB): mio.o
-	$(AR) rc $@ $^
-	$(RANLIB) $@
-
-deps.mak:
-	$(CC) -MM  $(CFLAGS) *.c >deps.mak
-
-# Generate header dependencies with "make deps.mak"
-include deps.mak


Modified: tagmanager/mio/mio-file.c
175 lines changed, 0 insertions(+), 175 deletions(-)
===================================================================
@@ -1,175 +0,0 @@
-/*
- *  MIO, an I/O abstraction layer replicating C file I/O API.
- *  Copyright (C) 2010  Colomban Wendling <ban at herbesfolles.org>
- * 
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- * 
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- * 
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
- */
-
-/* file IO implementation */
-
-#include <glib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include "mio.h"
-
-
-#define FILE_SET_VTABLE(mio)          \
-  G_STMT_START {                      \
-    mio->v_free     = file_free;      \
-    mio->v_read     = file_read;      \
-    mio->v_write    = file_write;     \
-    mio->v_getc     = file_getc;      \
-    mio->v_gets     = file_gets;      \
-    mio->v_ungetc   = file_ungetc;    \
-    mio->v_putc     = file_putc;      \
-    mio->v_puts     = file_puts;      \
-    mio->v_vprintf  = file_vprintf;   \
-    mio->v_clearerr = file_clearerr;  \
-    mio->v_eof      = file_eof;       \
-    mio->v_error    = file_error;     \
-    mio->v_seek     = file_seek;      \
-    mio->v_tell     = file_tell;      \
-    mio->v_rewind   = file_rewind;    \
-    mio->v_getpos   = file_getpos;    \
-    mio->v_setpos   = file_setpos;    \
-  } G_STMT_END
-
-
-static void
-file_free (MIO *mio)
-{
-  if (mio->impl.file.close_func) {
-    mio->impl.file.close_func (mio->impl.file.fp);
-  }
-  mio->impl.file.close_func = NULL;
-  mio->impl.file.fp = NULL;
-}
-
-static gsize
-file_read (MIO    *mio,
-           void   *ptr,
-           gsize   size,
-           gsize   nmemb)
-{
-  return fread (ptr, size, nmemb, mio->impl.file.fp);
-}
-
-static gsize
-file_write (MIO         *mio,
-           const void  *ptr,
-           gsize        size,
-           gsize        nmemb)
-{
-  return fwrite (ptr, size, nmemb, mio->impl.file.fp);
-}
-
-static gint
-file_putc (MIO  *mio,
-           gint  c)
-{
-  return fputc (c, mio->impl.file.fp);
-}
-
-static gint
-file_puts (MIO          *mio,
-           const gchar  *s)
-{
-  return fputs (s, mio->impl.file.fp);
-}
-
-G_GNUC_PRINTF (2, 0)
-static gint
-file_vprintf (MIO         *mio,
-              const gchar *format,
-              va_list      ap)
-{
-  return vfprintf (mio->impl.file.fp, format, ap);
-}
-
-static gint
-file_getc (MIO *mio)
-{
-  return fgetc (mio->impl.file.fp);
-}
-
-static gint
-file_ungetc (MIO  *mio,
-             gint  ch)
-{
-  return ungetc (ch, mio->impl.file.fp);
-}
-
-static gchar *
-file_gets (MIO    *mio,
-           gchar  *s,
-           gsize   size)
-{
-  return fgets (s, (int)size, mio->impl.file.fp);
-}
-
-static void
-file_clearerr (MIO *mio)
-{
-  clearerr (mio->impl.file.fp);
-}
-
-static gint
-file_eof (MIO *mio)
-{
-  return feof (mio->impl.file.fp);
-}
-
-static gint
-file_error (MIO *mio)
-{
-  return ferror (mio->impl.file.fp);
-}
-
-static gint
-file_seek (MIO  *mio,
-           glong offset,
-           gint  whence)
-{
-  return fseek (mio->impl.file.fp, offset, whence);
-}
-
-static glong
-file_tell (MIO *mio)
-{
-  return ftell (mio->impl.file.fp);
-}
-
-static void
-file_rewind (MIO *mio)
-{
-  rewind (mio->impl.file.fp);
-}
-
-static gint
-file_getpos (MIO    *mio,
-             MIOPos *pos)
-{
-  return fgetpos (mio->impl.file.fp, &pos->impl.file);
-}
-
-static gint
-file_setpos (MIO    *mio,
-             MIOPos *pos)
-{
-  return fsetpos (mio->impl.file.fp, &pos->impl.file);
-}


Modified: tagmanager/mio/mio-memory.c
480 lines changed, 0 insertions(+), 480 deletions(-)
===================================================================
@@ -1,480 +0,0 @@
-/*
- *  MIO, an I/O abstraction layer replicating C file I/O API.
- *  Copyright (C) 2010  Colomban Wendling <ban at herbesfolles.org>
- * 
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- * 
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- * 
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
- */
-
-/* memory IO implementation */
-
-#include <glib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include "mio.h"
-
-
-#define MEM_SET_VTABLE(mio)           \
-  G_STMT_START {                      \
-    mio->v_free     = mem_free;       \
-    mio->v_read     = mem_read;       \
-    mio->v_write    = mem_write;      \
-    mio->v_getc     = mem_getc;       \
-    mio->v_gets     = mem_gets;       \
-    mio->v_ungetc   = mem_ungetc;     \
-    mio->v_putc     = mem_putc;       \
-    mio->v_puts     = mem_puts;       \
-    mio->v_vprintf  = mem_vprintf;    \
-    mio->v_clearerr = mem_clearerr;   \
-    mio->v_eof      = mem_eof;        \
-    mio->v_error    = mem_error;      \
-    mio->v_seek     = mem_seek;       \
-    mio->v_tell     = mem_tell;       \
-    mio->v_rewind   = mem_rewind;     \
-    mio->v_getpos   = mem_getpos;     \
-    mio->v_setpos   = mem_setpos;     \
-  } G_STMT_END
-
-
-/* minimal reallocation chunk size */
-#define MIO_CHUNK_SIZE 4096
-
-
-static void
-mem_free (MIO *mio)
-{
-  if (mio->impl.mem.free_func) {
-    mio->impl.mem.free_func (mio->impl.mem.buf);
-  }
-  mio->impl.mem.buf = NULL;
-  mio->impl.mem.pos = 0;
-  mio->impl.mem.size = 0;
-  mio->impl.mem.allocated_size = 0;
-  mio->impl.mem.realloc_func = NULL;
-  mio->impl.mem.free_func = NULL;
-  mio->impl.mem.eof = FALSE;
-  mio->impl.mem.error = FALSE;
-}
-
-static gsize
-mem_read (MIO    *mio,
-          void   *ptr_,
-          gsize   size,
-          gsize   nmemb)
-{
-  gsize n_read = 0;
-  
-  if (size != 0 && nmemb != 0) {
-    gsize   size_avail  = mio->impl.mem.size - mio->impl.mem.pos;
-    gsize   copy_bytes  = size * nmemb;
-    guchar *ptr         = ptr_;
-  @@ Diff output truncated at 100000 characters. @@

--------------
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