<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3423a6fa40d4a6d281a306830e9b5bee09e1c601">https://github.com/macports/macports-ports/commit/3423a6fa40d4a6d281a306830e9b5bee09e1c601</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 3423a6f sand: Update to 0.3.0-20021016
</span>3423a6f is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 3423a6fa40d4a6d281a306830e9b5bee09e1c601
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Mon Nov 5 07:53:23 2018 -0600
<span style='display:block; white-space:pre;color:#404040;'> sand: Update to 0.3.0-20021016
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> And fix build failures and some warnings.
</span>---
textproc/sand/Portfile | 30 +-
textproc/sand/files/1-cli_getline.patch | 16 +
textproc/sand/files/2-error.patch | 20 +
textproc/sand/files/3-strlen-strcpy.patch | 18 +
textproc/sand/files/4-unused-comparison.patch | 18 +
textproc/sand/files/5-exit.patch | 15 +
.../sand/files/6-builtin-memcpy-chk-size.patch | 17 +
textproc/sand/files/7-return-type.patch | 69 +
textproc/sand/files/patch-Makefile.in | 11 -
textproc/sand/files/sand-0.3.0.patch | 1332 ++++++++++++++++++++
10 files changed, 1525 insertions(+), 21 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/Portfile b/textproc/sand/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 90f1361..25cdf33 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/textproc/sand/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +1,13 @@
</span> PortSystem 1.0
name sand
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 0.1.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 0.3.0-20021016
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname ${name}-0.1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums md5 15a68a43c11bdc3d4cebd8f9b74c513a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 4fd94e82ff7f040ef4a2b8e7c08fc50b41856539 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 4e0a8a6eb8e2c7bd71f6e14c405c67b8778b72f4a36e5229404405d88b98218c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 142067
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> categories textproc
license GPL-2+
platforms darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -12,13 +17,18 @@ long_description ${description}
</span>
homepage http://sand.sourceforge.net/
master_sites sourceforge
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums md5 15a68a43c11bdc3d4cebd8f9b74c513a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-Makefile.in
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib lib:libpub:libpub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles sand-0.3.0.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1-cli_getline.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2-error.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3-strlen-strcpy.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4-unused-comparison.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5-exit.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6-builtin-memcpy-chk-size.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7-return-type.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoreconf.args -fvi
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args --host=powerpc-apple-freebsd \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --mandir=${prefix}/share/man \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --infodir=${prefix}/share/info
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.cflags-append "-I/Library/OpenDarwin/Frameworks/libpub.framework/Headers"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.ldflags-append "-L/Library/OpenDarwin/Frameworks/libpub.framework/Libraries -lpub"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:texinfo
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/1-cli_getline.patch b/textproc/sand/files/1-cli_getline.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e275557
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/1-cli_getline.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cli.c:258:9: error: conflicting types for 'cli_getline'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ssize_t cli_getline(char **LINEPTR, size_t *N, FILE *STREAM)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cli.c:160:12: note: previous implicit declaration is here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( cli_getline( ¬e, ¬e_size, stdin) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/cli.c.orig 2018-11-05 05:42:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/cli.c 2018-11-05 07:03:21.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,6 +29,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "output.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "sand.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ssize_t cli_getline(char **LINEPTR, size_t *N, FILE *STREAM);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* cli_output - output of a text in cli mode*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* MDIARY */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/2-error.patch b/textproc/sand/files/2-error.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c93f06c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/2-error.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xmalloc.c:70:6: error: conflicting types for 'error'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+void error ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+./repl_func.h:32:6: note: previous declaration is here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+void error(int status, int errnum, ...);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/xmalloc.c 2001-05-05 07:40:53.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/xmalloc.c 2018-11-05 07:08:03.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -64,11 +64,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ The caller may set it to some other value. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int xmalloc_exit_failure = EXIT_FAILURE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if __STDC__ && (HAVE_VPRINTF || HAVE_DOPRNT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void error (int, int, const char *, ...);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void error ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static VOID *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fixup_null_alloc (n)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/3-strlen-strcpy.patch b/textproc/sand/files/3-strlen-strcpy.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4a05d3a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/3-strlen-strcpy.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xmalloc.c:135:16: warning: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Wimplicit-function-declaration]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ p = xmalloc (strlen (str) + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xmalloc.c:135:16: note: include the header <string.h> or explicitly provide a declaration for 'strlen'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xmalloc.c:136:3: warning: implicitly declaring library function 'strcpy' with type 'char *(char *, const char *)' [-Wimplicit-function-declaration]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ strcpy (p, str);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xmalloc.c:136:3: note: include the header <string.h> or explicitly provide a declaration for 'strcpy'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/xmalloc.c.orig 2001-05-05 07:40:53.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/xmalloc.c 2018-11-05 07:11:31.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define VOID char
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if STDC_HEADERS
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/4-unused-comparison.patch b/textproc/sand/files/4-unused-comparison.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c112f5d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/4-unused-comparison.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ddecode.c:169:21: warning: equality comparison result unused [-Wunused-comparison]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length == ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ddecode.c:169:21: note: use '=' to turn this equality comparison into an assignment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length == ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/ddecode.c.orig 2018-11-05 05:42:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/ddecode.c 2018-11-05 07:13:46.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -166,7 +166,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ddecode_find_tag(d,"</body>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( d_note.length == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_note.length == ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d->position = pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return d_note;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/5-exit.patch b/textproc/sand/files/5-exit.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4ef76a8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/5-exit.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+error.c:25:1: warning: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Wimplicit-function-declaration]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+exit (status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+error.c:25:1: note: include the header <stdlib.h> or explicitly provide a declaration for 'exit'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/error.c.orig 2001-05-05 07:10:24.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/error.c 2018-11-05 07:16:16.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,6 +20,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void error(int status, int errnum, ...)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit (status);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/6-builtin-memcpy-chk-size.patch b/textproc/sand/files/6-builtin-memcpy-chk-size.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..7107d77
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/6-builtin-memcpy-chk-size.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+mdiary.c:156:3: warning: '__builtin___memset_chk' will always overflow destination buffer [-Wbuiltin-memcpy-chk-size]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ memset(&d, '\0', sizeof(dinfo));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/usr/include/secure/_string.h:76:3: note: expanded from macro 'memset'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __builtin___memset_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/mdiary.c.orig 2018-11-05 07:32:08.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/mdiary.c 2018-11-05 07:32:34.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -153,7 +153,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ munmap(d->text, d->length);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close(d->fd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- memset(&d, '\0', sizeof(dinfo));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ memset(d, '\0', sizeof(dinfo));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* mdiary_note - returns a specific note in the mdiary */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/7-return-type.patch b/textproc/sand/files/7-return-type.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..495a4d6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/7-return-type.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,69 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+output-diary.c:55:1: warning: control reaches end of non-void function [-Wreturn-type]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+output-diary.c:72:1: warning: control reaches end of non-void function [-Wreturn-type]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+output-text.c:65:1: warning: control reaches end of non-void function [-Wreturn-type]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+output-text.c:89:1: warning: control reaches end of non-void function [-Wreturn-type]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/output-diary.c.orig 2001-05-05 07:40:44.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/output-diary.c 2018-11-05 07:36:13.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -36,7 +36,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int dump_file(FILE * from, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* out_diary_fputnote - outputs a note in diary format to a file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_diary_fputnote(dnote d, FILE * to)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_diary_fputnote(dnote d, FILE * to)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,7 +56,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* out_diary_special_fputnote - outputs a note in diary format to a file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ but with the note text in a file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_diary_special_fputnote(dnote d, FILE * to, FILE * source)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_diary_special_fputnote(dnote d, FILE * to, FILE * source)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(to, "<note>\n<date>%s</date>\n",dencode_date(d));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/output-text.c.orig 2018-11-05 07:33:38.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/output-text.c 2018-11-05 07:36:03.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,7 +35,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* out_text_fputnote - outputs a note in plain text format to a file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_text_fputnote(dnote d, FILE * to)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_text_fputnote(dnote d, FILE * to)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i, j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * date;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,7 +66,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* out_text_fputsummary - outputs note summary in plain text format to file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_text_fputsummary(dnote d, FILE * to, int id)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_text_fputsummary(dnote d, FILE * to, int id)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * date;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/output.h.orig 2018-11-05 07:33:38.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/output.h 2018-11-05 07:36:39.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,10 +25,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef __OUTPUT_H__SAND__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __OUTPUT_H__SAND__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_diary_fputnote(dnote d, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_diary_special_fputnote(dnote d, FILE * to, FILE * source);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_diary_fputnote(dnote d, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_diary_special_fputnote(dnote d, FILE * to, FILE * source);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_text_fputnote(dnote d, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int out_text_fputsummary(dnote d, FILE * to, int id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_text_fputnote(dnote d, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void out_text_fputsummary(dnote d, FILE * to, int id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/patch-Makefile.in b/textproc/sand/files/patch-Makefile.in
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 32b08f7..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/textproc/sand/files/patch-Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/Makefile.in Sat May 5 15:15:19 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/Makefile.in.new Mon Aug 30 18:59:02 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -159,7 +159,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sand: $(sand_OBJECTS) $(sand_DEPENDENCIES)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @rm -f sand
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- $(LINK) $(sand_LDFLAGS) $(sand_OBJECTS) $(sand_LDADD) $(LIBS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ $(LINK) $(sand_LDFLAGS) $(sand_OBJECTS) $(sand_LDADD) $(LIBS) $(LDFLAGS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tags: TAGS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/textproc/sand/files/sand-0.3.0.patch b/textproc/sand/files/sand-0.3.0.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..1b89fc8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/textproc/sand/files/sand-0.3.0.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,1332 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All the changes between the last released version 0.1.1 and the most recent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+code from sand.cvs.sourceforge.net.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ChangeLog.orig 2001-05-05 07:40:38.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ChangeLog 2001-12-25 14:43:10.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,3 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++2001-12-25 Per Jonsson <poj@users.sourceforge.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * sand: Fixed bug #232977
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2001-03-17 Per Jonsson <poj@users.sourceforge.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * sand: Fixed bug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.in.orig 2001-05-05 07:40:39.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure.in 2002-03-31 11:47:53.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_INIT(src/sand.c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnl Every other copy of the package version number gets its value from here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AM_INIT_AUTOMAKE(sand, 0.1.1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_INIT_AUTOMAKE(sand, 0.3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_SUBST(VERSION)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,8 +25,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnl Checks for library functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_REPLACE_FUNCS(getline)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AC_CHECK_FUNCS(fgetln)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_REPLACE_FUNCS(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AC_REPLACE_FUNCS(strndup)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AC_REPLACE_FUNCS(asprintf)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_OUTPUT(Makefile src/Makefile doc/Makefile sand.lsm sand.spec)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- doc/sand.1.orig 2001-05-05 08:09:10.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ doc/sand.1 2002-10-16 13:44:14.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,7 +13,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\" along with this program; see the file COPYING. If not, write to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\" the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.TH SAND 1 "May 5, 2001"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.TH SAND 1 "June 14, 2002"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\" Please update the above date whenever this man page is modified.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .\" Some roff macros, for reference:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -45,6 +45,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .B \-n \fIID\fB, \-\-note\fR=\fIID
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Choose what note to output.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++This option implies \-\-output-text.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.B \-l, \-\-list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Lists all the notes in the diary for use with the \fB-n\fP option.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .B \-v, \-\-verbose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Print more information.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- doc/sand.texinfo.orig 2001-05-05 08:12:15.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ doc/sand.texinfo 2002-10-16 13:44:15.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,12 +6,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @setchapternewpage odd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @c %**end of header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-@set VERSION 0.1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@set VERSION 0.3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @ifinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ This file documents the @code{sand} command which helps you keep your diary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Copyright (C) 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Copyright (C) 2001, 2002 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Permission is granted to make and distribute verbatim copies of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this manual provided the copyright notice and this permission notice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -44,7 +44,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @page
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @vskip 0pt plus 1filll
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Copyright @copyright{} 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Copyright @copyright{} 2001, 2002 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Permission is granted to make and distribute verbatim copies of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this manual provided the copyright notice and this permission notice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -58,7 +58,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Permission is granted to copy and distribute translations of this manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ into another language, under the above conditions for modified versions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except that this permission notice may be stated in a translation approved
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-by the Foundation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++by the Free Software Foundation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @end titlepage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @c All the nodes can be updated using the EMACS command
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -135,6 +135,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ only affects output modes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ zero based
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ -l, --list displays a list of all notes in the diary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -v, --verbose print more information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -h, --help display this help and exit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -V, --version output version information and exit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -170,6 +172,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @itemx -n @var{id}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Choose note with number @var{id} as the note to output with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @code{--output-text}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++This option also implies the @code{--output-text} option.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@item --list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@itemx -l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Lists all the notes in the diary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @item --verbose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @itemx -V
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,8 +195,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @node Known Problems, Problems, Invoking sand, Top
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @chapter Known Problems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @cindex problems, known
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-At the moment @code{sand} doesn't produce very much useful output,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-it just takes input and stores it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++No great ones at the moment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @node Problems, Concept Index, Known Problems, Top
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/Makefile.am.orig 2001-05-05 07:43:20.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/Makefile.am 2002-02-08 14:44:23.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,10 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INCLUDES = -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++CFLAGS= @CFLAGS@ -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LDADD = @LIBOBJS@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bin_PROGRAMS=sand
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++sand_SOURCES=sand.c sand.h cli.c cli.h xmalloc.c system.h getopt.c getopt1.c getopt.h ddecode.c ddecode.h dencode.c output-diary.c output-text.c output.h repl_func.h extra.c mdiary.c mdiary.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-sand_SOURCES=sand.c sand.h cli.c cli.h xmalloc.c system.h getopt.c getopt1.c getopt.h ddecode.c ddecode.h dencode.c output-diary.c output-text.c output.h repl_func.h extra.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-EXTRA_DIST = getline.c error.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++EXTRA_DIST = getline.c error.c strndup.c asprintf.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/asprintf.c.orig 1969-12-31 18:00:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/asprintf.c 2002-07-12 15:27:10.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,72 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright (C) 2001 Federico Di Gregorio <fog@debian.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright (C) 1991, 1994-1999, 2000, 2001 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This code has been derived from an example in the glibc2 documentation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This file is part of the psycopg module.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This program is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * modify it under the terms of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * as published by the Free Software Foundation; either version 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This program is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * You should have received a copy of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * along with this program; if not, write to the Free Software
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * asprintf.c -- asprintf() implementation for braindamaged operating systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * $Id: asprintf.c,v 1.1 2002/07/12 20:27:10 poj Exp $
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdarg.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++asprintf(char **buffer, char *fmt, ...)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Guess we need no more than 200 chars of space. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int size = 200;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int nchars;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ va_list ap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *buffer = (char*)malloc(size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (*buffer == NULL) return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Try to print in the allocated space. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ va_start(ap, fmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nchars = vsnprintf(*buffer, size, fmt, ap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ va_end(ap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (nchars >= size)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *tmpbuff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Reallocate buffer now that we know how much space is needed. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size = nchars+1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tmpbuff = (char*)realloc(*buffer, size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (tmpbuff == NULL) { /* we need to free it*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free(*buffer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *buffer=tmpbuff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Try again. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ va_start(ap, fmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nchars = vsnprintf(*buffer, size, fmt, ap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ va_end(ap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (nchars < 0) return nchars;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/cli.c.orig 2001-03-16 09:47:58.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/cli.c 2002-07-12 15:27:10.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,26 +29,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "output.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "sand.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* cli_output - output of a text in cli mode*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* MDIARY */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void cli_output()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnote note;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dinfo diary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Set it up for output */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- input_diary(&diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (ddecode_init(&diary)!= DIARY_IS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message_err("Diary-file isn't a diary");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit (EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- note = ddecode_note(&diary, note_number);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d = init_mdiary_file(get_diary_file_name());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ note = mdiary_note(&d, note_number);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (note.length)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case ERR_INV_FORMAT:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message_err("Your Diary is in a corrupt format.\nExiting...\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ERR_NO_SUCH_NOTE:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ message_err("The Note you request from the diary isn't available\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ message_err("Please try another\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -59,44 +51,60 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ out_text_fputnote(note, stdout);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free(diary.text);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* cli_dump - handles the dumping in case of cli mode */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* MDIARY */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void cli_dump()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnote note;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dinfo diary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int nmbr = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int cont = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d = init_mdiary_file(get_diary_file_name());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Set it up for dumping */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- input_diary(&diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (ddecode_init(&diary)!= DIARY_IS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message_err("Diary-file isn't a diary");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit (EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- note = ddecode_note_next(&diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ note = mdiary_note(&d, nmbr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (note.length)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case ERR_INV_FORMAT:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message_err("Your Diary is in a corrupt format.\nExiting...\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case ERR_NO_SUCH_NOTE:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j = ERR_NO_SUCH_NOTE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cont = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ out_text_fputnote(note, stdout);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while (j != ERR_NO_SUCH_NOTE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free(diary.text);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nmbr++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (cont == 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* cli_list - lists the notes in the diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* MDIARY */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void cli_list()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dnote note;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int nmbr = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int cont = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d = init_mdiary_file(get_diary_file_name());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ note = mdiary_note(&d, nmbr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (note.length)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case ERR_NO_SUCH_NOTE:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cont = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ out_text_fputsummary(note, stdout, nmbr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nmbr++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (cont == 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* cli_input - handles the input case of cli mode*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -246,7 +254,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* cli_getline - specialized getline variant */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ssize_t cli_getline(char **LINEPTR, size_t *N, FILE *STREAM)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ssize_t char_read;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -272,3 +280,37 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return char_read;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* cli_main - main when compiled in cli mode */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int cli_main(int argc, char **argv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int i,j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ unsigned char status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ program_name = argv[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ i = decode_switches (argc, argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Set up some configuration parsing */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ status = sand_config();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (want_output_text){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_output();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else if (want_dump_text){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_dump();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else if (want_list) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_list();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else if (want_note) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message_ver("Got note parameter but no output option. Defaulting to output-text\n",1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_output();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Normal input loop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_input(status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/cli.h.orig 2001-03-11 13:38:24.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/cli.h 2001-12-17 13:21:56.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,4 +28,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void cli_dump();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void cli_input(int status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int cli_main(int argc, char **argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/ddecode.c.orig 2001-05-05 07:40:42.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/ddecode.c 2001-12-17 13:21:56.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,20 +56,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* ddecode_find_tag searches for a tag in the diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int ddecode_find_tag(const dinfo d, const char * t)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int ddecode_find_tag(dinfo * d, const char * t)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i,j,f;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f = strlen(t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Loop to find <note> */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for (i = 0; i < (d.length - d.position - f); i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (i = 0; i < (d->length - d->position - f); i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ j=-1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (strncasecmp ((d.text + (d.position+i)), t ,f ) == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (strncasecmp ((d->text + (d->position+i)), t ,f ) == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ j = i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- i = d.length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ i = d->length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -97,7 +97,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Search for the note:th <note> tag */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i=0; i <= note; i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j=ddecode_find_tag(*d, "<note>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j=ddecode_find_tag(d, "<note>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d->position += ((j>0)?(j+6):(0));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -110,7 +110,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Find the date */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- date_pos = ddecode_find_tag(*d,"<date>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ date_pos = ddecode_find_tag(d,"<date>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( date_pos == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -119,7 +119,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Find end of date information */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j = ddecode_find_tag(*d,"</date>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j = ddecode_find_tag(d,"</date>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( j == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -128,7 +128,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Decode the date */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (ddecode_date(*d, &d_note, date_pos, j - date_pos)== -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (ddecode_date(d, &d_note, date_pos, j - date_pos)!= DATE_OK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d->position = pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -136,11 +136,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Locate the title of the not if there is one */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- title_start = ddecode_find_tag(*d,"<title>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ title_start = ddecode_find_tag(d,"<title>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( title_start != -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* If the title is opened, an end is required. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- title_end = ddecode_find_tag(*d,"</title>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ title_end = ddecode_find_tag(d,"</title>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( title_end == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -153,7 +153,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Find the position of the body */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j = ddecode_find_tag(*d,"<body>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j = ddecode_find_tag(d,"<body>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( j == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -163,7 +163,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d->position += j + 6;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Find the end of the body */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_note.length = ddecode_find_tag(*d,"</body>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d_note.length = ddecode_find_tag(d,"</body>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( d_note.length == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length == ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -172,7 +172,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Find the end of note tag */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- j = ddecode_find_tag(*d,"</note>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j = ddecode_find_tag(d,"</note>");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( j == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.length = ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -187,7 +187,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ((d->position > title_start) && (title_end > 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Now, Lets take care of the title */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_note.title = strndup((d->text + title_start + strlen("<title>")),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d_note.title = (char*)strndup((d->text + title_start + strlen("<title>")),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ title_end);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d_note.title = (char *) NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -198,23 +198,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* ddecode_date decodes the date */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int ddecode_date(const dinfo d, dnote * n, int p, int e)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int ddecode_date(dinfo * d, dnote * n, int p, int e)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char bck[5];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * temp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char * ltemp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int p_org = p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- while (isspace (d.text[p + d.position + 6]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ltemp = (char *)strndup((d->text + d->position), (e + 1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while (isspace (ltemp[p + 6]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ p++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bck[0] = d.text[p_org + d.position + e];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bck[1] = d.text[p_org + d.position + e - 1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bck[0] = ltemp[p_org + e];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ltemp[p_org + e] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bck[1] = ltemp[p_org + e - 1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!isdigit(bck[1]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ltemp[p_org + e - 1] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- temp = d.text + p + d.position + 6;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ temp = ltemp + p + 6;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* YEAR */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (isdigit(temp[0]) && isdigit(temp[1]) &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -223,8 +226,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bck[2] = temp[4];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[4] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = bck[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = bck[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free (ltemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -240,8 +242,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bck[2] = temp[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[2] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = bck[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = bck[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free (ltemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -260,8 +261,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bck[2] = temp[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[2] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = bck[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = bck[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free (ltemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -292,8 +292,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[5] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[8] = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = bck[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = bck[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free (ltemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ERR_INV_FORMAT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -318,9 +317,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[5] = bck[3];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ temp[8] = bck[4];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e] = bck[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d.text[p_org + d.position + e - 1] = bck[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free (ltemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return DATE_OK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/ddecode.h.orig 2001-05-05 07:40:42.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/ddecode.h 2001-12-17 13:21:56.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -26,6 +26,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct diary_base{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size_t length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int fd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int position;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * text;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } dinfo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -61,7 +62,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnote ddecode_note(dinfo * d, int note);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dnote ddecode_note_next(dinfo * d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int ddecode_init(dinfo * diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int ddecode_date(const dinfo d, dnote * n, int p, int e);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int ddecode_date(dinfo * d, dnote * n, int p, int e);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dtime time_t2dtime(time_t t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/getline.c.orig 2001-03-17 12:48:34.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/getline.c 2002-02-08 14:44:23.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,50 +1,143 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- getline.c - Replacement for getline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* getline.c -- Replacement for GNU C library function getline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- Copyright (C) 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Copyright (C) 1993 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- the Free Software Foundation; either version 2, or (at your option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- This program is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- You should have received a copy of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- along with this program; if not, write to the Free Software Foundation,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++This program is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++modify it under the terms of the GNU General Public License as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++published by the Free Software Foundation; either version 2 of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++License, or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "repl_func.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++This program is distributed in the hope that it will be useful, but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++General Public License for more details. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-char *xmalloc ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-char *xrealloc ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-char *xstrdup ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <config.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ssize_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-getline_fgetln (char **lineptr, size_t *n, FILE *stream)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if STDC_HEADERS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *malloc (), *realloc ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Always add at least this many bytes when extending the buffer. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MIN_CHUNK 64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ + OFFSET (and null-terminate it). *LINEPTR is a pointer returned from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ malloc (or NULL), pointing to *N characters of space. It is realloc'd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ as necessary. Return the number of characters read (not including the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ null terminator), or -1 on error or EOF. On a -1 return, the caller
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ should check feof(), if not then errno has been set to indicate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ the error. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int getstr (lineptr, n, stream, terminator, offset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char **lineptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t *n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FILE *stream;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char terminator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char *line;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- size_t len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- line = fgetln(stream, &len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!line)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (len >= *n) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char *tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* XXX some realloc() implementations don`t set errno */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- tmp = realloc(*lineptr, len + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!tmp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int nchars_avail; /* Allocated but unused chars in *LINEPTR. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *read_pos; /* Where we're reading into *LINEPTR. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!lineptr || !n || !stream)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *lineptr = tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *n = len + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- memcpy(*lineptr, line, len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (*lineptr)[len] = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!*lineptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *n = MIN_CHUNK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *lineptr = malloc (*n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!*lineptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = ENOMEM;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nchars_avail = *n - offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ read_pos = *lineptr + offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (;;)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int save_errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ register int c = getc (stream);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ save_errno = errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* We always want at least one char left in the buffer, since we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ always (unless we get an error while reading the first char)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NUL-terminate the line buffer. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ assert((*lineptr + *n) == (read_pos + nchars_avail));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (nchars_avail < 2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (*n > MIN_CHUNK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *n *= 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *n += MIN_CHUNK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nchars_avail = *n + *lineptr - read_pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *lineptr = realloc (*lineptr, *n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!*lineptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = ENOMEM;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ read_pos = *n - nchars_avail + *lineptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ assert((*lineptr + *n) == (read_pos + nchars_avail));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (ferror (stream))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Might like to return partial line, but there is no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ place for us to store errno. And we don't want to just
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lose errno. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = save_errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == EOF)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Return partial line, if any. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (read_pos == *lineptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *read_pos++ = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nchars_avail--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == terminator)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Return the line. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Done - NUL terminate and return the number of chars read. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *read_pos = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret = read_pos - (*lineptr + offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int getline (lineptr, n, stream)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char **lineptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t *n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FILE *stream;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return getstr (lineptr, n, stream, '\n', 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/mdiary.c.orig 1969-12-31 18:00:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/mdiary.c 2002-03-31 11:47:53.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,192 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sand - helps you keep your diary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary.c - handles diary in memory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Copyright (C) 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ the Free Software Foundation; either version 2, or (at your option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ You should have received a copy of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ along with this program; if not, write to the Free Software Foundation,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/mman.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <getopt.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "system.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "ddecode.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "output.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "sand.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "mdiary.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* input_diary_generic - reads an entire diary into memory */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++dinfo * input_diary_generic(dinfo * diary_ret, char * s)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int diary = 0; /* fd to diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char * diary_p = (char *)NULL; /* PATH to diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char * temp = (char *)NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int diarylen = 0; /* Misc uses concerning length of diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ssize_t nc = (ssize_t) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t length = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t diary_size = (size_t) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct stat dstat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->text = (char*) NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->length = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->position = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Open the file for reading */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary = open(s, O_RDONLY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->fd = diary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Do some error checking on the FILE * */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (diary == (int)NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (errno == EINVAL){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* The system isn't handling my mode, exiting */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit (EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Something else is wrong, exit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (fstat(diary, &dstat) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message_err("BAAAD failure when doing fstat on diary\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->text = mmap (NULL, dstat.st_size, PROT_READ, MAP_SHARED, diary,0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ length = dstat.st_size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (diary_ret->text == (char *)-1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Oops, the memorymapping failed */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message_err("BAAD failure when mmaping\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diary_ret->length = length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return diary_ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* init_mdiary_file - initializes a mdiary from a file, populates node list */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++mdiary init_mdiary_file(char * s)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mnote_list * cur;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mnote_list * latest;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FILE * d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dinfo t_diary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int dsize = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int nc = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int cont = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ input_diary_generic(&t_diary, s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ( ddecode_init(&t_diary) != DIARY_IS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message_err("I haven't got a diary.\nExiting\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fclose (d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit (EXIT_FAILURE); /* Escape from the program */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret.first = (mnote_list*)xmalloc(sizeof(mnote_list));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret.first->next = (mnote_list*)NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur = ret.first;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur->next = ret.first;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ latest = cur;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur->next->d = ddecode_note(&t_diary, DIARY_NEXT_NOTE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ latest = cur;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur = cur->next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur->next = (mnote_list*)xmalloc(sizeof(mnote_list));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur->next->next = (mnote_list*)NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(cur->d.length == ERR_NO_SUCH_NOTE) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cont = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else if (cur->d.length == ERR_INV_FORMAT) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ message_err("Invalid diary format\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fclose (d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ exit (EXIT_FAILURE); /* Escape from the program */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (cont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free(cur->next);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (cur != latest )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free(latest->next);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ latest->next = (mnote_list*)NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*close_diary(&t_diary); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* close_diary - close a dinfo diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void close_diary (dinfo * d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ munmap(d->text, d->length);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ close(d->fd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ memset(&d, '\0', sizeof(dinfo));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* mdiary_note - returns a specific note in the mdiary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++dnote mdiary_note(mdiary * d, int number)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dnote n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mnote_list * cur;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ memset(&n, '\0', sizeof(n));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur = d->first;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if((number == 0) || (cur->next == (mnote_list *)NULL))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (number == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ n = cur->d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ n.length = ERR_NO_SUCH_NOTE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ number = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cur = cur->next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ number--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while ( number >= 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/mdiary.h.orig 1969-12-31 18:00:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/mdiary.h 2001-12-25 07:09:42.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,46 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sand - helps you keep your diary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mdiary.h - handles diary in memory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Copyright (C) 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ the Free Software Foundation; either version 2, or (at your option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ You should have received a copy of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ along with this program; if not, write to the Free Software Foundation,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __SAND__MDIARY_H__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define __SAND__MDIARY_H__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "ddecode.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef struct diary_note_list{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dnote d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct diary_note_list * next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} mnote_list;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef struct diary_mem{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FILE * fd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mnote_list * first;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} mdiary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++dinfo * input_diary_generic(dinfo * diary_ret, char * s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++mdiary init_mdiary_file(char * s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++dnote mdiary_note(mdiary * d, int number);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/output-text.c.orig 2001-05-05 07:40:44.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/output-text.c 2001-12-25 12:59:32.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -63,3 +63,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(to, "\n\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* out_text_fputsummary - outputs note summary in plain text format to file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int out_text_fputsummary(dnote d, FILE * to, int id)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char * date;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ date = dencode_date(d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j = strlen(date);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(to, "%5i ", id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(to, "%s ",date);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (d.title != (char *) NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ j = strlen(d.title);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(to, "%s",d.title);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(to, "\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/output.h.orig 2001-05-05 07:32:03.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/output.h 2001-12-25 12:59:32.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,5 +29,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int out_diary_special_fputnote(dnote d, FILE * to, FILE * source);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int out_text_fputnote(dnote d, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int out_text_fputsummary(dnote d, FILE * to, int id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/repl_func.h.orig 2001-03-17 12:48:34.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/repl_func.h 2002-02-08 14:44:23.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,10 +24,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* getline */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef HAVE_GETLINE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef HAVE_FGETLN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define getline_fgetln getline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ssize_t getline_fgetln (char **lineptr, size_t *n, FILE *stream);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int getline (char **lineptr, size_t n, FILE * stream);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* error */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,4 +34,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <error.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* strndup */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef HAVE_STRNDUP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char * strndup(const char * s, size_t n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/sand.c.orig 2001-05-05 07:40:47.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/sand.c 2001-12-25 12:59:32.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __SAND_C__SAND__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SAND_CLI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -71,37 +72,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {NULL, 0, NULL, 0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static int decode_switches (int argc, char **argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main (int argc, char **argv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int i,j;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- unsigned char status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- program_name = argv[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- i = decode_switches (argc, argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Set up some configuration parsing */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- status = sand_config();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (want_output_text){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cli_output();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else if (want_dump_text){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cli_dump();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Normal input loop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cli_input(status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef SAND_CLI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cli_main(argc, argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Set all the option flags according to the switches specified.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Return the index of the first non-option argument. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ decode_switches (int argc, char **argv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -167,6 +150,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ only affects output modes\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ zero based\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ \n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ -l, --list displays a list of all notes in the diary\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -v, --verbose print more information\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -h, --help display this help and exit\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -V, --version output version information and exit\n\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -185,74 +170,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* input_diary - reads an entire diary into memory */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-dinfo * input_diary(dinfo * diary_ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FILE * diary = (FILE *) NULL; /* FILE * to diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char * diary_p = (char *)NULL; /* PATH to diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char * temp = (char *)NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int diarylen = 0; /* Misc uses concerning length of diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ssize_t nc = (ssize_t) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- size_t length = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- size_t diary_size = (size_t) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary_ret->text = (char*) NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary_ret->length = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary_ret->position = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Open the file for reading */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary = fopen(get_diary_file_name(), "r");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Do some error checking on the FILE * */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (diary == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (errno == EINVAL){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* The system isn't handling my mode, exiting */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit (EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Something else is wrong, exit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- perror("sand");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Loop until the whole diary is read */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Read the line */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- nc = getline( &diary_p, &diary_size, diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* If char_read == -1 then we probabably have read until EOF */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (nc == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!feof(diary)) /* Everything that is error except */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { /* EOF is evil */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message_err("Evil input from diary file\nExiting....\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- fclose (diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- exit (EXIT_FAILURE); /* Escape from the program */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- temp = xrealloc(temp, length + nc + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary_ret->text = temp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- temp = temp + length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- memcpy(temp, diary_p, nc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- length += nc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- temp = diary_ret->text;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while ( nc != -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- diary_ret->length = length;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- fclose(diary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return diary_ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* get_diary_file_name - returns the filename of the diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * get_diary_file_name()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/sand.h.orig 2001-03-16 09:52:07.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/sand.h 2002-02-08 14:44:23.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,6 +32,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ddecode.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "output.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "cli.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "mdiary.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define EXIT_OK 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define EXIT_FAILURE 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,6 +49,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void message_ver (char * msg, int msg_mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void message (char * msg) { message_ver(msg, 0);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void vmessage (char * msg) { message_ver(msg, 1);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void message_err (char * msg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned char sand_config();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,9 +58,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void get_create_rc_dir();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char * get_diary_file_name();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-dinfo * input_diary(dinfo *diary_ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FILE * open_diary(int mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int dump_file(FILE * from, FILE * to);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void close_diary (dinfo * d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int decode_switches (int argc, char **argv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* input_diary - wrapper to handle old style behaviour of input_diary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline dinfo * input_diary(dinfo * diary_ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return input_diary_generic(diary_ret, get_diary_file_name());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef __SAND_C__SAND__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* The name the program was run with, stripped of any leading path. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -70,10 +80,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* The program home dir */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern char *program_home;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern int want_verbose; /* --verbose */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern int want_verbose; /* --verbose */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int want_output_text; /* --output-text */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int want_dump_text; /* --dump-text */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int want_note; /* --note */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern int want_list; /* --list */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int note_number;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/strndup.c.orig 1969-12-31 18:00:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/strndup.c 2002-02-08 14:44:23.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,42 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ strndup.c - Replacement for strndup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Copyright (C) 2001 Stefan Kost
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Copyright (C) 2001 Per Jonsson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ the Free Software Foundation; either version 2, or (at your option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This program is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ You should have received a copy of the GNU General Public License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ along with this program; if not, write to the Free Software Foundation,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "repl_func.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *xmalloc ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *xrealloc ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *xstrdup ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char * strndup(const char * s, size_t n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(strlen(s)<n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d=xstrdup(s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d=xmalloc(n+1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ strncpy(d,s,n+1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d[n]='\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return(d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span></pre><pre style='margin:0'>
</pre>