From owner-bug-octave at bevo dot che dot wisc dot edu Thu Dec 12 17:23:34 1996 Subject: octave-2.0: more [fs]scanf bugs From: Joao Cardoso To: bug-octave at bevo dot che dot wisc dot edu Date: Thu, 12 Dec 96 23:21:18 GMT Hi, It seems that the scanf family is not robust: [jcard] hd xad (hexadecimal file dump) 0000 31 39 30 20 31 39 30 20 31 39 30 20 31 39 30 20 190 190 190 190 * 0030 31 39 30 20 31 39 30 20 31 39 30 20 0a 31 39 30 190 190 190 .190 0040 20 31 39 30 20 31 39 30 20 31 39 30 20 31 39 30 190 190 190 190 * 0070 20 31 39 30 20 31 39 30 20 0a 31 39 30 20 31 39 190 190 .190 19 0080 30 20 31 39 30 20 31 39 30 20 31 39 30 20 31 39 0 190 190 190 19 * 00b0 30 20 31 39 30 20 0a 31 39 30 20 31 39 30 20 31 0 190 .190 190 1 00c0 39 30 20 31 39 30 20 31 39 30 20 31 39 30 20 31 90 190 190 190 1 00d0 39 30 20 31 39 30 20 31 39 30 20 31 31 30 20 31 90 190 190 110 1 00e0 31 30 20 31 31 30 20 31 31 30 20 31 31 30 20 31 10 110 110 110 1 00f0 31 30 20 0a 32 33 31 20 32 33 31 20 32 33 31 20 10 .231 231 231 0100 31 31 30 20 31 31 30 20 31 31 30 20 31 31 30 20 110 110 110 110 * 0130 0a . 0131 octave:1> fp=fopen("xad","r") fp = 3 octave:2> a=fscanf(fp,"%c") a = 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 190 110 110 110 110 110 110 231 231 231 110 110 110 110 110 110 110 110 110 110 110 110 octave:3> b=sscanf(a,"%d") b = 0.0000e+00 5.3386e-315 5.3386e-315 5.3386e-315 5.3386e-315 5.3386e-315 .... octave:4> size(a) ans = 1 305 octave:5> b=sscanf(a(1,1:20),"%d") b = 190 190 190 190 190 octave:6> b=sscanf(a(1,1:100),"%d") b = 190 190 190 190 ... octave:7> b=sscanf(a(1,1:200),"%d") b = 0.00000 0.00000 0.00000 0.00000 ... octave:8> b=sscanf(a(1,1:199),"%d") b = 190 190 190 ... octave:10> b=sscanf(a(1,1:202),"%d") b = 190 190 190 190 ... octave:11> frewind(fp) ans = 0 octave:12> ftell(fp) ans = 0 octave:13> b=fscanf(fp,"%d") HANGUP, has to be killed externaly. NEWS: * Octave can now read files that contain columns of numbers only, with no header information. The name of the loaded variable is constructed from the file name. Each line in the file must have the same number of elements. Thanks, and happy bug-hunting :) Joao ______________________________________________________________________ bindir = /usr/local/bin imagepath = .:/usr/local/share/octave/2.0/imagelib// F2CFLAGS = FLIBS = -lf2c -L/usr/local/lib/gcc-lib/i486-sco3.2v4.0/2.7.2.1.f.1 -L/usr/loca l/lib -lgcc CPPFLAGS = CFLAGS = -DHAVE_CONFIG_H -O -pipe CXXFLAGS = -DHAVE_CONFIG_H -fno-implicit-templates -O -pipe LEXLIB = datadir = /usr/local/share localfcnfiledir = /usr/local/share/octave/site/m CPICFLAG = -fPIC CXXPICFLAG = -fPIC exec_prefix = /usr/local startupfiledir = /usr/local/share/octave/2.0/m/startup TERMLIBS = -ltermcap LIBS = -lm -lsocket LIBPLPLOT = DEFS = -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_GNU_INFO=1 -DUS E_READLINE=1 -DHAVE_LIBSOCKET=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA=1 -DF77_APPEND_UNDERSCORE=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DT IME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_IEEEFP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_PWD_H=1 -DHAVE_SGTTY_H=1 -DHAVE_STDLIB_ H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SE LECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS _TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UN ISTD_H=1 -DHAVE_VARARGS_H=1 -DNPSOL_MISSING=1 -DQPSOL_MISSING=1 -DFSQP_MISSING=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 - DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -D HAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGI D=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHA VE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID =1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAV E_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STR DUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DH AVE_UNLINK=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_LIBM=1 -DSCO=1 -DHAVE_ISINF=1 -DHAVE_ISNAN=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_RDEV= 1 -DHAVE_TZNAME=1 -DHAVE_GR_PASSWD=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DH AVE_POSIX_SIGNALS=1 -DHAVE_TIMES=1 -DGNUPLOT_HAS_MULTIPLOT=1 -DGNUPLOT_HAS_FRAME S=1 default_pager = more infodir = /usr/local/info FFLAGS = -O -pipe F2C = CXX = c++ 2.7.2.1.f.1 RLD_FLAG = archlibdir = /usr/local/libexec/octave/2.0/exec/i486-pc-sco3.2v4.0 fcnfilepath = .:/usr/local/libexec/octave/site/oct/i486-pc-sco3.2v4.0//:/usr/l ocal/share/octave/site/m//:/usr/local/libexec/octave/2.0/oct/i486-pc-sco3.2v4.0/ /:/usr/local/share/octave/2.0/m// F77 = g77 FPICFLAG = -fPIC LIBFLAGS = -L/usr/local/lib localstartupfiledir = /usr/local/share/octave/site/m/startup octfiledir = /usr/local/libexec/octave/2.0/oct/i486-pc-sco3.2v4.0 target_host_type = i486-pc-sco3.2v4.0 configure_options = --disable-lite-kernel --disable-shared LDFLAGS = -s CXXLIBS = -lsocket -lsocket -lstdc++ -lm -L/usr/local/lib/gcc-lib/i486-sco3.2v 4.0/2.7.2.1.f.1 -L/usr/local/lib -lsocket -lstdc++ -lm -lgcc -lc -lgcc prefix = /usr/local libdir = /usr/local/lib fcnfiledir = /usr/local/share/octave/2.0/m localoctfilepath = /usr/local/libexec/octave/site/oct/i486-pc-sco3.2v4.0// CC = gcc 2.7.2.1.f.1 LIBDLFCN = localfcnfilepath = /usr/local/share/octave/site/m// localarchlibdir = /usr/local/libexec/octave/site/exec/i486-pc-sco3.2v4.0 INCFLAGS = -I/usr/local/include -I/usr/local/include/octave-2.0 -- Joao Cardoso, INESC | e-mail: jcardoso at inescn dot pt R. Jose Falcao 110 | tel: + 351 2 2094345 4000 Porto, Portugal | fax: + 351 2 2008487