- no need anymore for the inline getline() implementation; it's not used anymore
This commit is contained in:
parent
790f3b84ea
commit
a49be8111e
@ -1,11 +1,11 @@
|
||||
# $OpenBSD: Makefile,v 1.42 2011/04/26 12:51:25 ajacoutot Exp $
|
||||
# $OpenBSD: Makefile,v 1.43 2011/05/14 13:41:14 jasper Exp $
|
||||
|
||||
COMMENT= GTK2 desktop calculator
|
||||
|
||||
GNOME_PROJECT= gcalctool
|
||||
GNOME_VERSION= 5.32.2
|
||||
|
||||
REVISION= 0
|
||||
REVISION= 1
|
||||
|
||||
CATEGORIES= math
|
||||
|
||||
|
@ -1,87 +0,0 @@
|
||||
$OpenBSD: patch-src_gcalccmd_c,v 1.1 2010/04/22 20:37:26 ajacoutot Exp $
|
||||
|
||||
Implement getline()
|
||||
|
||||
--- src/gcalccmd.c.orig Thu Apr 22 22:01:58 2010
|
||||
+++ src/gcalccmd.c Thu Apr 22 22:03:29 2010
|
||||
@@ -28,6 +28,80 @@
|
||||
|
||||
#define MAXLINE 1024
|
||||
|
||||
+#if defined(__OpenBSD__)
|
||||
+ssize_t getline(char **lineptr, size_t *n, FILE *stream)
|
||||
+{
|
||||
+ char *dest = *lineptr, *ret, *newline;
|
||||
+ size_t len = *n;
|
||||
+
|
||||
+ if (dest == NULL || len < 1) {
|
||||
+ len = 256;
|
||||
+ if ((dest = malloc(len)) == NULL) {
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Fetch up to line_length bytes from the file, or up to a newline */
|
||||
+ ret = fgets(dest, (int) (len-1), stream);
|
||||
+ if (ret == NULL) {
|
||||
+ if (feof(stream) != 0) {
|
||||
+ dest[0] = '\0';
|
||||
+ len = 0;
|
||||
+ return 0;
|
||||
+ } else {
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* If the line was too long, and so doesn't contain a newline, carry on
|
||||
+ * fetching until it does, or we hit the end of the file. */
|
||||
+ while ((newline = strchr(dest, '\n')) == NULL) {
|
||||
+ char *new_dest, *tmp;
|
||||
+
|
||||
+ /* Create a new storage space the same size as the last one, and carry
|
||||
+ * on reading. We'll need to append this to the previous string - fgets
|
||||
+ * will just overwrite it. */
|
||||
+ if ((tmp = malloc(len)) == NULL) {
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ ret = fgets(tmp, (int) (len-1), stream);
|
||||
+ if (ret == NULL) {
|
||||
+ /* This probably shouldn't happen... */
|
||||
+ if (feof(stream) != 0) {
|
||||
+ free(tmp);
|
||||
+ break;
|
||||
+ } else {
|
||||
+ free(tmp);
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ len *= 2;
|
||||
+ if ((new_dest = realloc(dest, (size_t)len)) == NULL) {
|
||||
+ free(tmp);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ dest = new_dest;
|
||||
+ strlcat(dest, tmp, len);
|
||||
+ free(tmp);
|
||||
+ }
|
||||
+
|
||||
+ /* Don't include the newline in the line we return. */
|
||||
+ if (newline != NULL)
|
||||
+ *newline = '\0';
|
||||
+
|
||||
+ return (ssize_t) (newline - dest - 1);
|
||||
+
|
||||
+error:
|
||||
+ free(dest);
|
||||
+ dest = NULL;
|
||||
+ len = 0;
|
||||
+ return -1;
|
||||
+}
|
||||
+#endif /* __OpenBSD__ */
|
||||
+
|
||||
static void
|
||||
solve(const char *equation)
|
||||
{
|
Loading…
Reference in New Issue
Block a user