- 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
|
COMMENT= GTK2 desktop calculator
|
||||||
|
|
||||||
GNOME_PROJECT= gcalctool
|
GNOME_PROJECT= gcalctool
|
||||||
GNOME_VERSION= 5.32.2
|
GNOME_VERSION= 5.32.2
|
||||||
|
|
||||||
REVISION= 0
|
REVISION= 1
|
||||||
|
|
||||||
CATEGORIES= math
|
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