diff options
author | Dima Panov <fluffy@FreeBSD.org> | 2010-05-08 10:45:27 +0000 |
---|---|---|
committer | Dima Panov <fluffy@FreeBSD.org> | 2010-05-08 10:45:27 +0000 |
commit | 1a296259867a5a71a384acbbffea17915a4f2d41 (patch) | |
tree | 75d2852c10966e3b166a4fae2c418822027b2830 | |
parent | - Dropping maintainership (diff) |
- Dropping maintainership [1]
- While here, try to fix build on 6.x/7.x by providing getline() [2]
PR: 146390 [1]
Submitted by: Dmitry Klimov <lazyklimm@gmail.com> (maintainer) [1]
kmoore@ via irc/email [2]
Notes
Notes:
svn path=/head/; revision=253946
-rw-r--r-- | x11-themes/qtcurve-gtk2/Makefile | 24 | ||||
-rw-r--r-- | x11-themes/qtcurve-gtk2/files/extra-patch-style-qt_settings.c | 11 | ||||
-rw-r--r-- | x11-themes/qtcurve-gtk2/files/getline.c | 168 | ||||
-rw-r--r-- | x11-themes/qtcurve-gtk2/files/getline.h | 24 | ||||
-rw-r--r-- | x11-themes/qtcurve-gtk2/files/getline_strndup.c | 184 |
5 files changed, 409 insertions, 2 deletions
diff --git a/x11-themes/qtcurve-gtk2/Makefile b/x11-themes/qtcurve-gtk2/Makefile index 21f4f40df708..c35310351073 100644 --- a/x11-themes/qtcurve-gtk2/Makefile +++ b/x11-themes/qtcurve-gtk2/Makefile @@ -7,6 +7,7 @@ PORTNAME= qtcurve PORTVERSION= 1.3.0 +PORTREVISION= 1 CATEGORIES= x11-themes MASTER_SITES= http://home.freeuk.com/cpdrummond/ \ http://craigd.wikispaces.com/file/view/ @@ -14,11 +15,30 @@ PKGNAMEPREFIX= gtk2- PKGNAMESUFFIX= -theme DISTNAME= QtCurve-Gtk2-${PORTVERSION} -MAINTAINER= lazyklimm@gmail.com +MAINTAINER= ports@FreeBSD.org COMMENT= QtCurve GTK2 Theme Engine USE_BZIP2= yes USE_CMAKE= yes USE_GNOME= gtk20 -.include <bsd.port.mk> +.include <bsd.port.pre.mk> + +.if ${OSVERSION} < 800067 +.if ${ARCH} == "amd64" +CFLAGS+= -fPIC +.endif +EXTRA_PATCHES+= ${FILESDIR}/extrapatch-* +.endif + +post-extract: +.if ${OSVERSION} < 800067 + ${CP} ${FILESDIR}/getline.h ${WRKSRC}/src +.if ${OSVERSION} < 701101 + ${CP} ${FILESDIR}/getline_strndup.c ${WRKSRC}/style/getline.c +.else + ${CP} ${FILESDIR}/getline.c ${WRKSRC}/style/getline.c +.endif +.endif + +.include <bsd.port.post.mk> diff --git a/x11-themes/qtcurve-gtk2/files/extra-patch-style-qt_settings.c b/x11-themes/qtcurve-gtk2/files/extra-patch-style-qt_settings.c new file mode 100644 index 000000000000..6ad7a45ddb18 --- /dev/null +++ b/x11-themes/qtcurve-gtk2/files/extra-patch-style-qt_settings.c @@ -0,0 +1,11 @@ +--- style/qt_settings.c.o 2010-05-06 14:56:53.000000000 +0000 ++++ style/qt_settings.c 2010-05-06 15:00:46.000000000 +0000 +@@ -22,6 +22,8 @@ + #include "common.h" + #define CONFIG_READ + #include "config_file.c" ++#include "getline.h" ++#include "getline.c" + #include <gtk/gtk.h> + #include <time.h> + #include <gdk/gdkcolor.h> diff --git a/x11-themes/qtcurve-gtk2/files/getline.c b/x11-themes/qtcurve-gtk2/files/getline.c new file mode 100644 index 000000000000..cdcb2add5e20 --- /dev/null +++ b/x11-themes/qtcurve-gtk2/files/getline.c @@ -0,0 +1,168 @@ +/* getline.c -- Replacement for GNU C library function getline + +Copyright (C) 1993 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. */ + +/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <sys/types.h> +#include <stdio.h> +#include <assert.h> +#include <errno.h> +#include "getline.h" + +/* Always add at least this many bytes when extending the buffer. */ +#define MIN_CHUNK 64 + +/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR + + OFFSET (and null-terminate it). If LIMIT is non-negative, then + read no more than LIMIT chars. + + *LINEPTR is a pointer returned from malloc (or NULL), pointing to + *N characters of space. It is realloc'd as necessary. + + Return the number of characters read (not including the null + terminator), or -1 on error or EOF. On a -1 return, the caller + should check feof(), if not then errno has been set to indicate the + error. */ + +int +getstr (lineptr, n, stream, terminator, offset, limit) + char **lineptr; + size_t *n; + FILE *stream; + int terminator; + int offset; + int limit; +{ + int nchars_avail; /* Allocated but unused chars in *LINEPTR. */ + char *read_pos; /* Where we're reading into *LINEPTR. */ + int ret; + + if (!lineptr || !n || !stream) + { + errno = EINVAL; + return -1; + } + + if (!*lineptr) + { + *n = MIN_CHUNK; + *lineptr = malloc (*n); + if (!*lineptr) + { + errno = ENOMEM; + return -1; + } + *lineptr[0] = '\0'; + } + + nchars_avail = *n - offset; + read_pos = *lineptr + offset; + + for (;;) + { + int save_errno; + register int c; + + if (limit == 0) + break; + else + { + c = getc (stream); + + /* If limit is negative, then we shouldn't pay attention to + it, so decrement only if positive. */ + if (limit > 0) + limit--; + } + + save_errno = errno; + + /* We always want at least one char left in the buffer, since we + always (unless we get an error while reading the first char) + NUL-terminate the line buffer. */ + + assert((*lineptr + *n) == (read_pos + nchars_avail)); + if (nchars_avail < 2) + { + if (*n > MIN_CHUNK) + *n *= 2; + else + *n += MIN_CHUNK; + + nchars_avail = *n + *lineptr - read_pos; + *lineptr = realloc (*lineptr, *n); + if (!*lineptr) + { + errno = ENOMEM; + return -1; + } + read_pos = *n - nchars_avail + *lineptr; + assert((*lineptr + *n) == (read_pos + nchars_avail)); + } + + if (ferror (stream)) + { + /* Might like to return partial line, but there is no + place for us to store errno. And we don't want to just + lose errno. */ + errno = save_errno; + return -1; + } + + if (c == EOF) + { + /* Return partial line, if any. */ + if (read_pos == *lineptr) + return -1; + else + break; + } + + *read_pos++ = c; + nchars_avail--; + + if (c == terminator) + /* Return the line. */ + break; + } + + /* Done - NUL terminate and return the number of chars read. */ + *read_pos = '\0'; + + ret = read_pos - (*lineptr + offset); + return ret; +} + +int +getline (lineptr, n, stream) + char **lineptr; + size_t *n; + FILE *stream; +{ + return getstr (lineptr, n, stream, '\n', 0, GETLINE_NO_LIMIT); +} + +int +getline_safe (lineptr, n, stream, limit) + char **lineptr; + size_t *n; + FILE *stream; + int limit; +{ + return getstr (lineptr, n, stream, '\n', 0, limit); +} diff --git a/x11-themes/qtcurve-gtk2/files/getline.h b/x11-themes/qtcurve-gtk2/files/getline.h new file mode 100644 index 000000000000..2816a0641af1 --- /dev/null +++ b/x11-themes/qtcurve-gtk2/files/getline.h @@ -0,0 +1,24 @@ +#ifndef _getline_h_ +#define _getline_h_ 1 + +#include <stdio.h> + +#if defined (__GNUC__) || (defined (__STDC__) && __STDC__) +#define __PROTO(args) args +#else +#define __PROTO(args) () +#endif /* GCC. */ + +#define GETLINE_NO_LIMIT -1 + +#ifndef _WITH_GETLINE +int + getline __PROTO ((char **_lineptr, size_t *_n, FILE *_stream)); +int + getline_safe __PROTO ((char **_lineptr, size_t *_n, FILE *_stream, + int limit)); +int + getstr __PROTO ((char **_lineptr, size_t *_n, FILE *_stream, + int _terminator, int _offset, int limit)); +#endif +#endif /* _getline_h_ */ diff --git a/x11-themes/qtcurve-gtk2/files/getline_strndup.c b/x11-themes/qtcurve-gtk2/files/getline_strndup.c new file mode 100644 index 000000000000..2ee51b571409 --- /dev/null +++ b/x11-themes/qtcurve-gtk2/files/getline_strndup.c @@ -0,0 +1,184 @@ +/* Copyright (C) 1993 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <sys/types.h> +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> +#include <errno.h> +#include "getline.h" + +/* Always add at least this many bytes when extending the buffer. */ +#define MIN_CHUNK 64 + +/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR + + OFFSET (and null-terminate it). If LIMIT is non-negative, then + read no more than LIMIT chars. + + *LINEPTR is a pointer returned from malloc (or NULL), pointing to + *N characters of space. It is realloc'd as necessary. + + Return the number of characters read (not including the null + terminator), or -1 on error or EOF. On a -1 return, the caller + should check feof(), if not then errno has been set to indicate the + error. */ + +int +getstr (lineptr, n, stream, terminator, offset, limit) + char **lineptr; + size_t *n; + FILE *stream; + int terminator; + int offset; + int limit; +{ + int nchars_avail; /* Allocated but unused chars in *LINEPTR. */ + char *read_pos; /* Where we're reading into *LINEPTR. */ + int ret; + + if (!lineptr || !n || !stream) + { + errno = EINVAL; + return -1; + } + + if (!*lineptr) + { + *n = MIN_CHUNK; + *lineptr = malloc (*n); + if (!*lineptr) + { + errno = ENOMEM; + return -1; + } + *lineptr[0] = '\0'; + } + + nchars_avail = *n - offset; + read_pos = *lineptr + offset; + + for (;;) + { + int save_errno; + register int c; + + if (limit == 0) + break; + else + { + c = getc (stream); + + /* If limit is negative, then we shouldn't pay attention to + it, so decrement only if positive. */ + if (limit > 0) + limit--; + } + + save_errno = errno; + + /* We always want at least one char left in the buffer, since we + always (unless we get an error while reading the first char) + NUL-terminate the line buffer. */ + + assert((*lineptr + *n) == (read_pos + nchars_avail)); + if (nchars_avail < 2) + { + if (*n > MIN_CHUNK) + *n *= 2; + else + *n += MIN_CHUNK; + + nchars_avail = *n + *lineptr - read_pos; + *lineptr = realloc (*lineptr, *n); + if (!*lineptr) + { + errno = ENOMEM; + return -1; + } + read_pos = *n - nchars_avail + *lineptr; + assert((*lineptr + *n) == (read_pos + nchars_avail)); + } + + if (ferror (stream)) + { + /* Might like to return partial line, but there is no + place for us to store errno. And we don't want to just + lose errno. */ + errno = save_errno; + return -1; + } + + if (c == EOF) + { + /* Return partial line, if any. */ + if (read_pos == *lineptr) + return -1; + else + break; + } + + *read_pos++ = c; + nchars_avail--; + + if (c == terminator) + /* Return the line. */ + break; + } + + /* Done - NUL terminate and return the number of chars read. */ + *read_pos = '\0'; + + ret = read_pos - (*lineptr + offset); + return ret; +} + +int +getline (lineptr, n, stream) + char **lineptr; + size_t *n; + FILE *stream; +{ + return getstr (lineptr, n, stream, '\n', 0, GETLINE_NO_LIMIT); +} + +int +getline_safe (lineptr, n, stream, limit) + char **lineptr; + size_t *n; + FILE *stream; + int limit; +{ + return getstr (lineptr, n, stream, '\n', 0, limit); +} + +char * +strndup (str, n) + const char *str; + size_t n; +{ + size_t len; + char *copy; + + len = strlen(str); + if (n < len) + len = n; + copy = malloc(len + 1); + if (copy == NULL) + return NULL; + memcpy(copy, str, len); + copy[len] = '\0'; + return copy; +} |