-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBUGS
213 lines (175 loc) · 9.17 KB
/
BUGS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
Build
=====
the mktime test in configure fails miserably
the configure script generates a buggy texi2html perl script.
SciPlot is not found by configure.
MySQL is not found by configure.
Normally, these errors are now eliminated from the configure script.
Don't try to regenerate a configure script with automake,
the resulting Makefile will get stuck in a loop calling configure.
Some corrections have been made in configure.in and sciplot.m4 but they
are not sufficient to generate a proper ./configure script.
Running Oleo
=============
Buggy Internationalization/Localization
----------------------------------------
When using a non-C locale where the decimal separator is the
comma ',' and not the decimal point '.'
1) Graphs do not work whether with Plotutils or SciPlot
After defining a graph, oleo crashes.
2) Saving to a file leaves some lines
Gr000,00000
...
Gr110,00000
in the .oleo file that will crash oleo when loading it.
The solution is to replace Grnn0,000 with Grnn0.000 to obtain
a valid .oleo file
3) When entering constants such as 1.6e-19, they are first transformed
to 1,6e-19 then Oleo complains of a parse error.
4) Postscript printing fails because coordinates are not written in the
form Postscript printers/interpreters expect
Workaround around all these bugs: start oleo with LANG=C /path/oleo
A fix for bug 2) using setlocale(3) has been found in the current version.
In the C locale, accented caracters é or è are displayed as \350 or \351.
With a fr_FR.ISO8859-1 locale and CDE, the accented characters are displayed correctly.
printing
--------
See above for non-C locale.
Printing to file in ps format resulted in lines overwritten on each other. Editing the PS file, and doubling the ordinates shift produces a legible file. The part of postscript.c that calculate line heights contains an error.
I have doubled the line height in postscript.c and now lines are not overwritten. Don't try to print more than 96 lines.
Printing UTF-8 characters produces garbage.
Printing in text format caused a coredump. corrected.
surprising as prtext.c did nothing.
GDB backtrace was
0x00005555555bdc68 in print_region_cmd (print=0x7fffffffd5b8,
fp=0x55555592c8a0) at print.c:352
#2 0x00005555555b3dad in ReallyPrintCB (w=<optimized out>,
client=<optimized out>, call=<optimized out>) at io-motif.c:1973
a message AfmFontWidth:failed is visible. This is solved, the problem was an undefined function in the Driver for Text printing.
Accented characters did't print correctly. é was represented as \351
and è as \350 in the Motif interface.
When printing, Ø appears in the place of é, Lslash in the place of è. PostScript documentation indicates that in standard encoding
351 is Oslash 350 Lslash. In Isolatin1 Encoding é is 351 è is 350.
So Oleo was using wrongly the standard Encoding instead of Isolatin1 in Postscript files.
Borrowing this code from XFig EPS files solved the issue.
/reencdict 12 dict def /ReEncode { reencdict begin
/newcodesandnames exch def /newfontname exch def /basefontname exch def
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
basefontdict { exch dup /FID ne { dup /Encoding eq
{ exch dup length array copy newfont 3 1 roll put }
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
newfont /FontName newfontname put newcodesandnames aload pop
128 1 255 { newfont /Encoding get exch /.notdef put } for
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
newfontname newfont definefont pop end } def
/isovec [
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
8#220 /dotlessi 8#230 /oe 8#231 /OE
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
/Times-Roman /Times-RomanISOLatin1 isovec ReEncode
/Courier /CourierISOLatin1 isovec ReEncode
/FontName where { pop } { /FontName (Courier) def } ifelse
/FirstSize where { pop } { /FirstSize 10 def } ifelse
%%EndProlog
/CourierISOLatin1 findfont 12 scalefont setfont
This amounted to reencode the font files so that it uses ISO8859-1.
Oleo actually did that, but the default font was /CGTimes instead of /Times-Roman.
As the postscript interpreter could not find the font, it uses the standard encoding. Changing the default font to Time-Roman solved the problem.
Postscript printing of plots fails. Empty file if from plotutils, coredump if from SciPlot. Oddity: ploututils prints successfully to fig,png,gif,tek.
Format selection for files
--------------------------
Choosing sc,sylk,dbf format in "Save As" or "Open" menu caused a crash.
The char pattern[10] was too short to accomodate
"*.[Cc][Ss][Vv]" (2+3*4=14 characters). corrected.
Saving to csv still caused a crash.
gdb gave
Program received signal SIGSEGV, Segmentation fault.
stricmp (s1=s1@entry=0x5555555cea04 "oleo", s2=s2@entry=0x0) at utils.c:573
573 chr2 = isupper (*scan2) ? tolower (*scan2) : *scan2;
(gdb) list
568 scan1 = s1;
569 scan2 = s2;
570 do
571 {
572 chr1 = isupper (*scan1) ? tolower (*scan1) : *scan1;
573 chr2 = isupper (*scan2) ? tolower (*scan2) : *scan2;
574 scan1++;
575 scan2++;
576 }
577 while (chr1 && chr1 == chr2);
with backtrace
#0 stricmp (s1=s1@entry=0x5555555cea04 "oleo", s2=s2@entry=0x0) at utils.c:573
#1 0x00005555555901d0 in write_file_generic_2 (fp=0x55555592f140, rng=0x0,
format=0x0) at io-utils.c:1345
#2 0x0000555555590342 in write_file_generic (fp=0x55555592f140, rng=0x0,
format=<optimized out>) at io-utils.c:1383
The cause was an unimplemented function to write CSV files.
Using the function to write lists with ',' as separator solved this problem.
It could be more practical to use another symbol such as ';' or '/' or '|' or '¦' as separator. Commas can be used to separate thousands in numbers or in text to separate an author name from its initial.
Formats:
-------
Using the curses interface, and printing, formats are taken into account.
Formats are also saved correctly.
But the Motif interface is not displaying formats. Why ?
The function print_cell does the formatted printing by calling
GET_FORMAT (cp);
GET_PRECISION (cp);
and using
pr_flt (cp->cell_flt, &dol, p);
But cell_value_string is used, calling flt_to_str (cp->cell_flt);
instead.
switch (j)
{
case FMT_FXT:
case FMT_DOL:
case FMT_PCT:
return pr_flt (cp->cell_flt, &fxt, p);
default:
return flt_to_str (cp->cell_flt);
}
This does nothing
cell_format_string(CELL *cp)
{
static char no_default[] = "";
/* FIXME: Doesn't anything! */
if (cp == NULL)
return fmt_to_str(0, 0);
else
return no_default;
}
It is used by cell in cells.c
insert_cell_attr (struct rng * rng, char * attr) in io-edit.c
Bar charts
==========
There were no legends for x and y axis in bar charts. corrected
The data along x axis was not indicated, i. e. if we wanted to plot
temperatures versus month, the month labels along x would be missing. corrected
The scale on y axis was not shown. Now, Oleo displays the integer times power of ten closest to the maximum value of y data.
Only non stacked bar charts are possible. The toggle Stacked/Non-stacked is inactive. Stacked bar charts can be restored by changing stacked=0 into stacked=1 in plotter.c
The data was getting completely mixed up in the bar charts. This is corrected.
The dataset legends in the bar charts were shown except for the last dataset. corrected.
The symbols and the colors were wrong: the Bar Chart was not using the color code of XY chart. corrected.
Negative values were set to zero. While this is good for a stacked bar chart, it should not be done with non-stacked bar charts. corrected.