Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Mon, 25 Jul 2016 00:06:20 UTC Commit: 5d8e291c6f7e5dfdfaf11cfe11e46684ffc669b5 https://github.com/geany/geany/commit/5d8e291c6f7e5dfdfaf11cfe11e46684ffc669...
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@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@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@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@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@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).