mariadb/cmd-line-utils/libedit/fgetln.c

110 lines
1.7 KiB
C
Raw Normal View History

#include <stdio.h>
#include "compat.h"
#ifndef HAVE_FGETLN
#ifdef HAVE_GETLINE
extern int getline (char **lineptr, size_t *n, FILE *stream);
#else
/* The interface here is that of GNU libc's getline */
static int
getline (char **lineptr, size_t *n, FILE *stream)
{
#define EXPAND_CHUNK 16
int n_read = 0;
char *line = *lineptr;
if (lineptr == NULL) return -1;
if (n == NULL) return -1;
if (stream == NULL) return -1;
if (*lineptr == NULL || *n == 0) return -1;
#ifdef HAVE_FLOCKFILE
flockfile (stream);
#endif
while (1)
{
int c;
#ifdef HAVE_FLOCKFILE
c = getc_unlocked (stream);
#else
c = getc (stream);
#endif
if (c == EOF)
{
if (n_read > 0)
line[n_read] = '\0';
break;
}
if (n_read + 2 >= *n)
{
size_t new_size;
if (*n == 0)
new_size = 16;
else
new_size = *n * 2;
if (*n >= new_size) /* Overflowed size_t */
line = NULL;
else
Fixed a lot of wrong memory references as reported by valgrind Portability fixes Added new client function: mysql_get_server_version() New server help code (From Victor Vagin) Fixed wrong usage of binary() Disabled RTREE usage for now. BitKeeper/etc/ignore: added scripts/fill_help_tables.sql client/mysql.cc: Some fixes when using 'help' cmd-line-utils/libedit/compat.h: Portability fix cmd-line-utils/libedit/fgetln.c: Portability fix include/mysql.h: Added new client function: mysql_get_server_version() libmysql/libmysql.c: Added new client function: mysql_get_server_version() libmysqld/libmysqld.c: Fixed prototype mysql-test/install_test_db.sh: Added creation of help tables mysql-test/r/connect.result: Added help tables mysql-test/r/myisam.result: Test of RTREE index mysql-test/r/type_ranges.result: updated results mysql-test/t/myisam.test: Test of RTREE index mysql-test/t/type_ranges.test: Updated test mysys/charset.c: Indentation change mysys/my_symlink.c: Removed compiler warning scripts/fill_help_tables.sh: Update for new help tables sql/field.cc: Indentation changes sql/filesort.cc: Optimized character set usage sql/item_cmpfunc.cc: Fix wrong usage of binary() sql/item_cmpfunc.h: Fix wrong usage of binary() sql/item_func.cc: Fix wrong usage of binary() sql/item_func.h: Fix wrong usage of binary() sql/item_strfunc.cc: Fix wrong usage of binary() sql/item_sum.cc: Fix wrong usage of binary() sql/item_sum.h: Fix wrong usage of binary() sql/key.cc: Indentation change sql/lex.h: HELP -> HELP_SYM sql/mysql_priv.h: Make get_field() more general sql/password.c: Indentation change + variable initialisation moved sql/sql_acl.cc: Make get_field() more general sql/sql_base.cc: Added comments + assertion for double call to mysql_lock_tables sql/sql_cache.cc: Indentation changes sql/sql_class.h: Added need_strxnfrm to SORT_FIELD to be able to optimise character set handling in filesort sql/sql_derived.cc: Renamed variables sql/sql_help.cc: New help functions (from Victor Vagin) sql/sql_lex.cc: Removed variables that doesn't have to be initialized for each query sql/sql_lex.h: Removed not used variable (olap) sql/sql_parse.cc: Fixed (not fatal) access of unitialized memory Indentation / code cleanup sql/sql_prepare.cc: Indentaion cleanup sql/sql_table.cc: Disabled RTREE until 5.0 sql/sql_udf.cc: Make get_field() more general sql/sql_yacc.yy: Removed access to uninitialized memory Always set offset_limit and select_limit when using LIMIT (removed warnings) Allow usage of 'help week' sql/table.cc: Make get_field() more general More comments sql/table.h: Fixded type of TABLE_LIST->derived sql/time.cc: Stricter date / datetime handling (to be able to handle timestamps with days and microseconds) strings/ctype-bin.c: Added cha
2003-02-12 21:55:37 +02:00
line = (char *) (*lineptr ? (char*) realloc(*lineptr, new_size) :
(char*) malloc(new_size));
if (line)
{
*lineptr = line;
*n = new_size;
}
else
{
if (*n > 0)
{
(*lineptr)[*n - 1] = '\0';
n_read = *n - 2;
}
break;
}
}
line[n_read] = c;
n_read++;
if (c == '\n')
{
line[n_read] = '\0';
break;
}
}
#ifdef HAVE_FLOCKFILE
funlockfile (stream);
#endif
return n_read - 1;
}
#endif /* ! HAVE_GETLINE */
char *fgetln(FILE *stream, size_t *len)
{
char *ptr = NULL;
Removed compiler warnings cmd-line-utils/libedit/chared.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/common.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/el.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/emacs.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/fgetln.c: Removed RCSID to get rid of compiler warnings Removed compiler warning cmd-line-utils/libedit/hist.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/history.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/key.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/map.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/parse.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/prompt.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/read.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/readline.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/refresh.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/search.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/sig.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/term.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/tokenizer.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/tty.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/vi.c: Removed RCSID to get rid of compiler warnings mysys/Makefile.am: Remove library dependency for charset2html to get correct makefile tests/client_test.c: Indentation change
2003-01-19 02:24:02 +02:00
int sz;
size_t length= 0;
Removed compiler warnings cmd-line-utils/libedit/chared.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/common.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/el.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/emacs.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/fgetln.c: Removed RCSID to get rid of compiler warnings Removed compiler warning cmd-line-utils/libedit/hist.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/history.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/key.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/map.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/parse.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/prompt.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/read.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/readline.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/refresh.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/search.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/sig.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/term.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/tokenizer.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/tty.c: Removed RCSID to get rid of compiler warnings cmd-line-utils/libedit/vi.c: Removed RCSID to get rid of compiler warnings mysys/Makefile.am: Remove library dependency for charset2html to get correct makefile tests/client_test.c: Indentation change
2003-01-19 02:24:02 +02:00
sz = getline(&ptr, &length, stream);
if(len) {
*len = sz;
}
return sz >= 0 ? ptr : NULL;
}
#endif