<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( &note, &note_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>