From a6df6a7a090a9cc23eb7abb40fd729ab73f7b908 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 7 Aug 2012 15:02:46 -0500
Subject: mcpp 2.7.2

---
 abs/extra/mcpp/PKGBUILD      |  35 +++++++++++++++
 abs/extra/mcpp/fs28284.patch | 100 +++++++++++++++++++++++++++++++++++++++++++
 abs/extra/mcpp/namlen.patch  |  11 +++++
 3 files changed, 146 insertions(+)
 create mode 100644 abs/extra/mcpp/PKGBUILD
 create mode 100644 abs/extra/mcpp/fs28284.patch
 create mode 100644 abs/extra/mcpp/namlen.patch

diff --git a/abs/extra/mcpp/PKGBUILD b/abs/extra/mcpp/PKGBUILD
new file mode 100644
index 0000000..6ed62f1
--- /dev/null
+++ b/abs/extra/mcpp/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 159222 2012-05-18 11:58:32Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=mcpp
+pkgver=2.7.2
+pkgrel=4
+pkgdesc="Matsui's CPP implementation precisely conformed to standards"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://mcpp.sourceforge.net"
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+        namlen.patch
+        fs28284.patch)
+md5sums=('512de48c87ab023a69250edc7a0c7b05'
+         '0bfc6177a58e912a9e23e368578dd3fe'
+         'ba668fc6996e538f2e0c096f9eb282ce')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/namlen.patch"
+  patch -Np1 -i "${srcdir}/fs28284.patch"
+  ./configure --prefix=/usr --enable-mcpplib --disable-static
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+  ln -sf ../../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/extra/mcpp/fs28284.patch b/abs/extra/mcpp/fs28284.patch
new file mode 100644
index 0000000..960203c
--- /dev/null
+++ b/abs/extra/mcpp/fs28284.patch
@@ -0,0 +1,100 @@
+diff -c -r -N ../mcpp-2.7.2/src/internal.H ./src/internal.H
+*** ../mcpp-2.7.2/src/internal.H	2008-08-27 10:31:16.000000000 -0230
+--- ./src/internal.H	2009-12-17 21:01:35.000000000 -0330
+***************
+*** 390,395 ****
+--- 390,397 ----
+  extern char     identifier[];       /* Lastly scanned name          */
+  extern IFINFO   ifstack[];          /* Information of #if nesting   */
+  extern char     work_buf[];
++ extern FILEINFO * sh_file;
++ extern int      sh_line;
+          /* Temporary buffer for directive line and macro expansion  */
+  
+  /* main.c   */
+***************
+*** 557,562 ****
+  #endif
+  #endif
+  
+! #if HOST_HAVE_STPCPY
+  extern char *   stpcpy( char * dest, const char * src);
+  #endif
+--- 559,564 ----
+  #endif
+  #endif
+  
+! #if HOST_HAVE_STPCPY && !defined(stpcpy)
+  extern char *   stpcpy( char * dest, const char * src);
+  #endif
+diff -c -r -N ../mcpp-2.7.2/src/main.c ./src/main.c
+*** ../mcpp-2.7.2/src/main.c	2008-11-05 05:04:46.000000000 -0330
+--- ./src/main.c	2009-12-17 20:42:42.000000000 -0330
+***************
+*** 326,331 ****
+--- 326,333 ----
+              = FALSE;
+      option_flags.trig = TRIGRAPHS_INIT;
+      option_flags.dig = DIGRAPHS_INIT;
++     sh_file = NULL;
++     sh_line = 0;
+  }
+  
+  int     mcpp_lib_main
+diff -c -r -N ../mcpp-2.7.2/src/support.c ./src/support.c
+*** ../mcpp-2.7.2/src/support.c	2008-06-10 06:02:33.000000000 -0230
+--- ./src/support.c	2009-12-17 20:42:39.000000000 -0330
+***************
+*** 188,194 ****
+      size_t      length
+  )
+  {
+!     if (mem_buf_p->bytes_avail < length) {  /* Need to allocate more memory */
+          size_t size = MAX( BUF_INCR_SIZE, length);
+  
+          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
+--- 188,194 ----
+      size_t      length
+  )
+  {
+!     if (mem_buf_p->bytes_avail < length + 1) {  /* Need to allocate more memory */
+          size_t size = MAX( BUF_INCR_SIZE, length);
+  
+          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
+***************
+*** 1722,1727 ****
+--- 1722,1729 ----
+                      sp -= 2;
+                      while (*sp != '\n')     /* Until end of line    */
+                          mcpp_fputc( *sp++, OUT);
++                     mcpp_fputc( '\n', OUT);
++                     wrong_line = TRUE;
+                  }
+                  goto  end_line;
+              default:                        /* Not a comment        */
+diff -c -r -N ../mcpp-2.7.2/src/system.c ./src/system.c
+*** ../mcpp-2.7.2/src/system.c	2008-11-26 06:23:51.000000000 -0330
+--- ./src/system.c	2009-12-17 20:42:42.000000000 -0330
+***************
+*** 3858,3863 ****
+--- 3858,3866 ----
+  }
+  #endif
+  
++ FILEINFO*       sh_file;
++ int             sh_line;
++ 
+  void    sharp(
+      FILEINFO *  sharp_file,
+      int         flag        /* Flag to append to the line for GCC   */
+***************
+*** 3868,3875 ****
+   * else (i.e. 'sharp_file' is NULL) 'infile'.
+   */
+  {
+-     static FILEINFO *   sh_file;
+-     static int  sh_line;
+      FILEINFO *  file;
+      int         line;
+  
+--- 3871,3876 ----
diff --git a/abs/extra/mcpp/namlen.patch b/abs/extra/mcpp/namlen.patch
new file mode 100644
index 0000000..6af7418
--- /dev/null
+++ b/abs/extra/mcpp/namlen.patch
@@ -0,0 +1,11 @@
+--- mcpp-2.7.2/src/mbchar.c	2008-03-08 13:06:13.000000000 +0000
++++ mcpp-2.7.2/src/mbchar.c	2009-03-08 13:14:17.000000000 +0000
+@@ -345,7 +345,7 @@
+ static size_t   mb_read_utf8( int c1, char ** in_pp, char ** out_pp);
+                 /* For UTF8 mbchar encoding         */
+ 
+-#define NAMLEN          20
++#define NAMLEN          40
+ #define UPPER           1               /* To upper */
+ #define LOWER           0               /* To lower */
+ 
-- 
cgit v0.12

