Compare commits
6 Commits
Author | SHA256 | Date | |
---|---|---|---|
771b54c9a1 | |||
d6a210c2d7 | |||
c84631ec1a | |||
89f5bba3ad | |||
7f03dfce79 | |||
c8bffd9d8e |
BIN
Gnuplot6.pdf
(Stored with Git LFS)
BIN
Gnuplot6.pdf
(Stored with Git LFS)
Binary file not shown.
7
_constraints
Normal file
7
_constraints
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<constraints>
|
||||||
|
<hardware>
|
||||||
|
<disk>
|
||||||
|
<size unit="G">4</size>
|
||||||
|
</disk>
|
||||||
|
</hardware>
|
||||||
|
</constraints>
|
@@ -1,75 +0,0 @@
|
|||||||
commit b456a3ef618f55a20b3071d336cb20514274f1d4
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Tue Mar 11 12:31:54 2025 -0700
|
|
||||||
|
|
||||||
guard against invalid read from plot->labels
|
|
||||||
|
|
||||||
If a plot style uses points and the point chosen has PT_CHARACTER
|
|
||||||
then the program looks for a possible font in plot->labels->font.
|
|
||||||
These plot styles contain a flag bit HAS_POINT (gp_types.h).
|
|
||||||
The program makes sure to initialize plot->labels for these styles.
|
|
||||||
However a problem arises when a plot style that doesn't use points
|
|
||||||
nevertheless triggers this same attempted font lookup by using a
|
|
||||||
linetype that happens to use pointtype PT_CHARACTER.
|
|
||||||
I think this is only possible with 'splot' but I added parallel
|
|
||||||
checks for 'plot' as well.
|
|
||||||
|
|
||||||
Bug 2776
|
|
||||||
|
|
||||||
diff --git src/boundary.c src/boundary.c
|
|
||||||
index e787de3f1..941635f7a 100644
|
|
||||||
--- src/boundary.c
|
|
||||||
+++ src/boundary.c
|
|
||||||
@@ -1468,7 +1468,7 @@ do_key_sample_point(
|
|
||||||
(*t->pointsize)(pointsize);
|
|
||||||
if (on_page(xl + key_point_offset, yl)) {
|
|
||||||
if (this_plot->lp_properties.p_type == PT_CHARACTER) {
|
|
||||||
- if (this_plot->labels->textcolor.type != TC_DEFAULT)
|
|
||||||
+ if (this_plot->labels && this_plot->labels->textcolor.type != TC_DEFAULT)
|
|
||||||
apply_pm3dcolor(&(this_plot->labels->textcolor));
|
|
||||||
(*t->put_text) (xl + key_point_offset, yl,
|
|
||||||
this_plot->lp_properties.p_char);
|
|
||||||
diff --git src/graph3d.c src/graph3d.c
|
|
||||||
index bda614b7a..74ae8d558 100644
|
|
||||||
--- src/graph3d.c
|
|
||||||
+++ src/graph3d.c
|
|
||||||
@@ -2164,7 +2164,7 @@ plot3d_points(struct surface_points *plot)
|
|
||||||
/* Set whatever we can that applies to every point in the loop */
|
|
||||||
if (plot->lp_properties.p_type == PT_CHARACTER) {
|
|
||||||
ignore_enhanced(TRUE);
|
|
||||||
- if (plot->labels->font && plot->labels->font[0])
|
|
||||||
+ if (plot->labels && plot->labels->font && plot->labels->font[0])
|
|
||||||
(*t->set_font) (plot->labels->font);
|
|
||||||
(*t->justify_text) (CENTRE);
|
|
||||||
}
|
|
||||||
@@ -2260,7 +2260,7 @@ plot3d_points(struct surface_points *plot)
|
|
||||||
|
|
||||||
/* Return to initial state */
|
|
||||||
if (plot->lp_properties.p_type == PT_CHARACTER) {
|
|
||||||
- if (plot->labels->font && plot->labels->font[0])
|
|
||||||
+ if (plot->labels && plot->labels->font && plot->labels->font[0])
|
|
||||||
(*t->set_font) ("");
|
|
||||||
ignore_enhanced(FALSE);
|
|
||||||
}
|
|
||||||
diff --git src/graphics.c src/graphics.c
|
|
||||||
index 083cb61f4..f68ef7096 100644
|
|
||||||
--- src/graphics.c
|
|
||||||
+++ src/graphics.c
|
|
||||||
@@ -2649,7 +2649,7 @@ plot_points(struct curve_points *plot)
|
|
||||||
/* Set whatever we can that applies to every point in the loop */
|
|
||||||
if (plot->lp_properties.p_type == PT_CHARACTER) {
|
|
||||||
ignore_enhanced(TRUE);
|
|
||||||
- if (plot->labels->font && plot->labels->font[0])
|
|
||||||
+ if (plot->labels && plot->labels->font && plot->labels->font[0])
|
|
||||||
(*t->set_font) (plot->labels->font);
|
|
||||||
(*t->justify_text) (CENTRE);
|
|
||||||
}
|
|
||||||
@@ -2781,7 +2781,7 @@ plot_points(struct curve_points *plot)
|
|
||||||
|
|
||||||
/* Return to initial state */
|
|
||||||
if (plot->lp_properties.p_type == PT_CHARACTER) {
|
|
||||||
- if (plot->labels->font && plot->labels->font[0])
|
|
||||||
+ if (plot->labels && plot->labels->font && plot->labels->font[0])
|
|
||||||
(*t->set_font) ("");
|
|
||||||
ignore_enhanced(FALSE);
|
|
||||||
}
|
|
@@ -1,30 +0,0 @@
|
|||||||
commit 226809aebb345e74d371bb43a2b434b490be527a
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Wed Jan 15 11:56:13 2025 -0800
|
|
||||||
|
|
||||||
dumb: more stringent tests against y bound of dumb terminal charcell array
|
|
||||||
|
|
||||||
Bug 2756
|
|
||||||
|
|
||||||
diff --git term/dumb.trm term/dumb.trm
|
|
||||||
index 498e27fc6..fdc94fbf5 100644
|
|
||||||
--- term/dumb.trm
|
|
||||||
+++ term/dumb.trm
|
|
||||||
@@ -801,7 +801,7 @@ DUMB_put_text(unsigned int x, unsigned int y, const char *str)
|
|
||||||
{
|
|
||||||
int i, length;
|
|
||||||
|
|
||||||
- if (y > dumb_ymax)
|
|
||||||
+ if (y < 0 || y > dumb_ymax)
|
|
||||||
return;
|
|
||||||
|
|
||||||
length = gp_strlen(str);
|
|
||||||
@@ -949,7 +949,7 @@ ENHdumb_FLUSH()
|
|
||||||
y += i;
|
|
||||||
|
|
||||||
/* print the string fragment, perhaps invisibly */
|
|
||||||
- if (ENHdumb_show && y < dumb_ymax) {
|
|
||||||
+ if (ENHdumb_show && (0 <= y && y < dumb_ymax)) {
|
|
||||||
for (i = 0; i < len && x < dumb_xmax; i++, x++) {
|
|
||||||
utf8_copy_one( (char *)(&DUMB_PIXEL(x, y)), gp_strchrn(str,i));
|
|
||||||
#ifndef NO_DUMB_COLOR_SUPPORT
|
|
@@ -1,84 +0,0 @@
|
|||||||
commit b78cc829a18e9436daaa859c96f3970157f3171e
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Tue Jan 14 21:23:19 2025 -0800
|
|
||||||
|
|
||||||
use snprintf to protect against garbage user-supplied mouse format
|
|
||||||
|
|
||||||
Bug 2754
|
|
||||||
|
|
||||||
diff --git src/mouse.c src/mouse.c
|
|
||||||
index 4d1362130..95266738b 100644
|
|
||||||
--- src/mouse.c
|
|
||||||
+++ src/mouse.c
|
|
||||||
@@ -270,7 +270,7 @@ static void alert(void);
|
|
||||||
static void MousePosToGraphPosReal(int xx, int yy, double *x, double *y, double *x2, double *y2);
|
|
||||||
static char *xy_format(void);
|
|
||||||
static char *zoombox_format(void);
|
|
||||||
-static char *GetAnnotateString(char *s, double x, double y, int mode, char *fmt);
|
|
||||||
+static char *GetAnnotateString(char *s, size_t len, double x, double y, int mode, char *fmt);
|
|
||||||
static char *xDateTimeFormat(double x, char *b, int mode);
|
|
||||||
static void GetRulerString(char *p, double x, double y);
|
|
||||||
static void apply_zoom(struct t_zoom * z);
|
|
||||||
@@ -524,7 +524,7 @@ zoombox_format()
|
|
||||||
/* formats the information for an annotation (middle mouse button clicked)
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
-GetAnnotateString(char *s, double x, double y, int mode, char *fmt)
|
|
||||||
+GetAnnotateString(char *s, size_t len, double x, double y, int mode, char *fmt)
|
|
||||||
{
|
|
||||||
if (axis_array[FIRST_X_AXIS].datatype == DT_DMS
|
|
||||||
|| axis_array[FIRST_Y_AXIS].datatype == DT_DMS) {
|
|
||||||
@@ -579,11 +579,11 @@ GetAnnotateString(char *s, double x, double y, int mode, char *fmt)
|
|
||||||
r = rmin + x/cos(phi);
|
|
||||||
|
|
||||||
if (fmt)
|
|
||||||
- sprintf(s, fmt, theta, r);
|
|
||||||
+ snprintf(s, len, fmt, theta, r);
|
|
||||||
else
|
|
||||||
sprintf(s, "theta: %.1f%s r: %g", theta, degree_sign, r);
|
|
||||||
} else if ((mode == MOUSE_COORDINATES_ALT) && fmt) {
|
|
||||||
- sprintf(s, fmt, x, y); /* user defined format */
|
|
||||||
+ snprintf(s, len, fmt, x, y); /* user defined format */
|
|
||||||
} else if (mode == MOUSE_COORDINATES_FUNCTION) {
|
|
||||||
/* EXPERIMENTAL !!! */
|
|
||||||
t_value original_x, original_y;
|
|
||||||
@@ -606,7 +606,7 @@ GetAnnotateString(char *s, double x, double y, int mode, char *fmt)
|
|
||||||
gpfree_string(&readout);
|
|
||||||
} else {
|
|
||||||
/* Default format ("set mouse mouseformat" is not active) */
|
|
||||||
- sprintf(s, xy_format(), x, y); /* usual x,y values */
|
|
||||||
+ snprintf(s, len, xy_format(), x, y); /* usual x,y values */
|
|
||||||
}
|
|
||||||
return s + strlen(s);
|
|
||||||
}
|
|
||||||
@@ -1020,10 +1020,10 @@ UpdateStatuslineWithMouseSetting(mouse_setting_t * ms)
|
|
||||||
strcat(format, ms->fmt);
|
|
||||||
strcat(format, ", ");
|
|
||||||
strcat(format, ms->fmt);
|
|
||||||
- sprintf(s0, format, surface_rot_x, surface_rot_z, surface_scale, surface_zscale);
|
|
||||||
+ snprintf(s0, 255, format, surface_rot_x, surface_rot_z, surface_scale, surface_zscale);
|
|
||||||
} else if (!TICS_ON(axis_array[SECOND_X_AXIS].ticmode) && !TICS_ON(axis_array[SECOND_Y_AXIS].ticmode)) {
|
|
||||||
/* only first X and Y axis are in use */
|
|
||||||
- sp = GetAnnotateString(s0, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
+ sp = GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
if (ruler.on)
|
|
||||||
GetRulerString(sp, real_x, real_y);
|
|
||||||
} else {
|
|
||||||
@@ -2286,7 +2286,7 @@ event_buttonrelease(struct gp_event_t *ge)
|
|
||||||
* only place, if the user didn't drag (rotate) the plot */
|
|
||||||
|
|
||||||
if (!is_3d_plot || !motion) {
|
|
||||||
- GetAnnotateString(s0, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
+ GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
term->set_clipboard(s0);
|
|
||||||
if (display_ipc_commands()) {
|
|
||||||
fprintf(stderr, "put `%s' to clipboard.\n", s0);
|
|
||||||
@@ -2302,7 +2302,7 @@ event_buttonrelease(struct gp_event_t *ge)
|
|
||||||
/* draw temporary annotation or label. For 3d plots this is
|
|
||||||
* only done if the user didn't drag (scale) the plot */
|
|
||||||
if (!is_3d_plot || !motion) {
|
|
||||||
- GetAnnotateString(s0, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
+ GetAnnotateString(s0, 255, real_x, real_y, mouse_mode, mouse_alt_string);
|
|
||||||
if (mouse_setting.label) {
|
|
||||||
if (modifier_mask & Mod_Ctrl) {
|
|
||||||
remove_label(mouse_x, mouse_y);
|
|
@@ -1,107 +0,0 @@
|
|||||||
commit ed647df512786b3c94429dd5c864715301e03ea5
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Tue Mar 11 16:31:23 2025 -0700
|
|
||||||
|
|
||||||
guard against trying to format a huge number as a time
|
|
||||||
|
|
||||||
The time formatting code does not handle time_in_seconds > 1.e12
|
|
||||||
(sometime in the year 33658).
|
|
||||||
|
|
||||||
Bug 2779
|
|
||||||
|
|
||||||
diff --git src/mouse.c src/mouse.c
|
|
||||||
index ba0609290..a6110f5ff 100644
|
|
||||||
--- src/mouse.c
|
|
||||||
+++ src/mouse.c
|
|
||||||
@@ -619,6 +619,11 @@ static char *
|
|
||||||
xDateTimeFormat(double x, char *b, int mode)
|
|
||||||
{
|
|
||||||
struct tm tm;
|
|
||||||
+ if (fabs(x) > 1.e12) { /* Some time in the year 33688 */
|
|
||||||
+ int_warn(NO_CARET, "time value out of range");
|
|
||||||
+ *b = '\0';
|
|
||||||
+ return b;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
switch (mode) {
|
|
||||||
case MOUSE_COORDINATES_XDATE:
|
|
||||||
commit 3270021820ff6ac7a6d77b77fe69777129937994
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Wed Mar 12 19:56:13 2025 -0700
|
|
||||||
|
|
||||||
check valid range on time value before trying to format it
|
|
||||||
|
|
||||||
Absurdly large time values (number of seconds) cause failures in the
|
|
||||||
routines that populate a time structure and format the result.
|
|
||||||
The program does complain about an invalid time value but only
|
|
||||||
after the failures have already occurred.
|
|
||||||
E.g.
|
|
||||||
print strftime("%Y", 1.e14)
|
|
||||||
|
|
||||||
Now a check for fabs(time) > 1.e12 is the first thing in f_strftime().
|
|
||||||
|
|
||||||
Bug 2779
|
|
||||||
|
|
||||||
diff --git src/internal.c src/internal.c
|
|
||||||
index 53be8d409..2d8812e49 100644
|
|
||||||
--- src/internal.c
|
|
||||||
+++ src/internal.c
|
|
||||||
@@ -1905,30 +1905,37 @@ f_strftime(union argument *arg)
|
|
||||||
int_error(NO_CARET,
|
|
||||||
"First parameter to strftime must be a format string");
|
|
||||||
|
|
||||||
- /* Prepare format string.
|
|
||||||
- * Make sure the resulting string not empty by adding a space.
|
|
||||||
- * Otherwise, the return value of gstrftime doesn't give enough
|
|
||||||
- * information.
|
|
||||||
- */
|
|
||||||
- fmtlen = strlen(fmt.v.string_val) + 1;
|
|
||||||
- fmtstr = gp_alloc(fmtlen + 1, "f_strftime: fmt");
|
|
||||||
- strncpy(fmtstr, fmt.v.string_val, fmtlen);
|
|
||||||
- strncat(fmtstr, " ", fmtlen);
|
|
||||||
- buflen = 80 + 2*fmtlen;
|
|
||||||
- buffer = gp_alloc(buflen, "f_strftime: buffer");
|
|
||||||
-
|
|
||||||
- /* Get time_str */
|
|
||||||
- length = gstrftime(buffer, buflen, fmtstr, real(&val));
|
|
||||||
- if (length == 0 || length >= buflen)
|
|
||||||
- int_error(NO_CARET, "String produced by time format is too long");
|
|
||||||
-
|
|
||||||
- /* Remove trailing space */
|
|
||||||
- assert(buffer[length-1] == ' ');
|
|
||||||
- buffer[length-1] = NUL;
|
|
||||||
+ /* Range check */
|
|
||||||
+ if (!(fabs(real(&val)) < 1.e12)) {
|
|
||||||
+ int_warn(NO_CARET, "time value out of range");
|
|
||||||
+ buffer = strdup(" ");
|
|
||||||
+
|
|
||||||
+ } else {
|
|
||||||
+ /* Prepare format string.
|
|
||||||
+ * Make sure the resulting string not empty by adding a space.
|
|
||||||
+ * Otherwise, the return value of gstrftime doesn't give enough
|
|
||||||
+ * information.
|
|
||||||
+ */
|
|
||||||
+ fmtlen = strlen(fmt.v.string_val) + 1;
|
|
||||||
+ fmtstr = gp_alloc(fmtlen + 1, "f_strftime: fmt");
|
|
||||||
+ strncpy(fmtstr, fmt.v.string_val, fmtlen);
|
|
||||||
+ strncat(fmtstr, " ", fmtlen);
|
|
||||||
+ buflen = 80 + 2*fmtlen;
|
|
||||||
+ buffer = gp_alloc(buflen, "f_strftime: buffer");
|
|
||||||
+
|
|
||||||
+ /* Get time_str */
|
|
||||||
+ length = gstrftime(buffer, buflen, fmtstr, real(&val));
|
|
||||||
+ if (length == 0 || length >= buflen)
|
|
||||||
+ int_error(NO_CARET, "String produced by time format is too long");
|
|
||||||
+
|
|
||||||
+ /* Remove trailing space */
|
|
||||||
+ assert(buffer[length-1] == ' ');
|
|
||||||
+ buffer[length-1] = NUL;
|
|
||||||
+ free(fmtstr);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
gpfree_string(&val);
|
|
||||||
gpfree_string(&fmt);
|
|
||||||
- free(fmtstr);
|
|
||||||
|
|
||||||
push(Gstring(&val, buffer));
|
|
||||||
free(buffer);
|
|
@@ -1,33 +0,0 @@
|
|||||||
commit b2343fd02c4fff94957f0151b73daa0a1f7fec49
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Tue Jan 14 21:54:14 2025 -0800
|
|
||||||
|
|
||||||
canvas: handle nonlinear x2 or y2 axis with an incomplete definition
|
|
||||||
|
|
||||||
Actually "handle" means "ignore".
|
|
||||||
But now it doesn't segfault trying to probe a non-existant link function.
|
|
||||||
|
|
||||||
Bug 2755
|
|
||||||
|
|
||||||
diff --git term/canvas.trm term/canvas.trm
|
|
||||||
index a919b09bd..bfe567832 100644
|
|
||||||
--- term/canvas.trm
|
|
||||||
+++ term/canvas.trm
|
|
||||||
@@ -646,7 +646,7 @@ CANVAS_text()
|
|
||||||
} else
|
|
||||||
fprintf(gpoutfile, "gnuplot.plot_axis_x2min = \"none\"\n");
|
|
||||||
if (axis_array[SECOND_X_AXIS].linked_to_primary
|
|
||||||
- && axis_array[FIRST_X_AXIS].link_udf->at) {
|
|
||||||
+ && axis_array[FIRST_X_AXIS].link_udf && axis_array[FIRST_X_AXIS].link_udf->at) {
|
|
||||||
fprintf(gpoutfile, "gnuplot.x2_mapping = function(x) { return x; };");
|
|
||||||
fprintf(gpoutfile, " // replace returned value with %s\n",
|
|
||||||
axis_array[FIRST_X_AXIS].link_udf->definition);
|
|
||||||
@@ -657,7 +657,7 @@ CANVAS_text()
|
|
||||||
} else
|
|
||||||
fprintf(gpoutfile, "gnuplot.plot_axis_y2min = \"none\"\n");
|
|
||||||
if (axis_array[SECOND_Y_AXIS].linked_to_primary
|
|
||||||
- && axis_array[FIRST_Y_AXIS].link_udf->at) {
|
|
||||||
+ && axis_array[FIRST_Y_AXIS].link_udf && axis_array[FIRST_Y_AXIS].link_udf->at) {
|
|
||||||
fprintf(gpoutfile, "gnuplot.y2_mapping = function(y) { return y; };");
|
|
||||||
fprintf(gpoutfile, " // replace returned value with %s\n",
|
|
||||||
axis_array[FIRST_Y_AXIS].link_udf->definition);
|
|
@@ -1,34 +0,0 @@
|
|||||||
commit af96c2c1b20383684b1ec2084dab7936f7053031
|
|
||||||
Author: Ethan A Merritt <merritt@u.washington.edu>
|
|
||||||
Date: Tue Jan 14 20:56:37 2025 -0800
|
|
||||||
|
|
||||||
x11: protect against double fclose() if two errors in a row
|
|
||||||
|
|
||||||
Bug 2753
|
|
||||||
|
|
||||||
diff --git term/x11.trm term/x11.trm
|
|
||||||
index 18ad4ad85..cbe01dd0e 100644
|
|
||||||
--- term/x11.trm
|
|
||||||
+++ term/x11.trm
|
|
||||||
@@ -854,8 +854,9 @@ X11_atexit()
|
|
||||||
/* dont wait(), since they might be -persist */
|
|
||||||
X11_ipc = NULL;
|
|
||||||
#ifdef PIPE_IPC
|
|
||||||
- close(ipc_back_fd);
|
|
||||||
- ipc_back_fd = -1;
|
|
||||||
+ if (ipc_back_fd >= 0)
|
|
||||||
+ close(ipc_back_fd);
|
|
||||||
+ ipc_back_fd = IPC_BACK_CLOSED;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1374,7 +1375,8 @@ X11_graphics()
|
|
||||||
#ifdef PIPE_IPC
|
|
||||||
/* if we know the outboard driver has stopped, restart it */
|
|
||||||
if (ipc_back_fd == IPC_BACK_CLOSED) {
|
|
||||||
- fclose(X11_ipc);
|
|
||||||
+ if (X11_ipc > 0)
|
|
||||||
+ fclose(X11_ipc);
|
|
||||||
X11_ipc = NULL;
|
|
||||||
X11_init();
|
|
||||||
}
|
|
@@ -115,7 +115,7 @@
|
|||||||
envptr = loadpath;
|
envptr = loadpath;
|
||||||
--- src/show.c
|
--- src/show.c
|
||||||
+++ src/show.c 2020-07-17 07:25:00.022670914 +0000
|
+++ src/show.c 2020-07-17 07:25:00.022670914 +0000
|
||||||
@@ -1139,6 +1139,15 @@ show_version(FILE *fp)
|
@@ -1138,6 +1138,15 @@ show_version(FILE *fp)
|
||||||
p /* type "help seeking-assistance" */
|
p /* type "help seeking-assistance" */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -93,7 +93,7 @@
|
|||||||
|
|
||||||
--- gnuplot-6.0.0/src/plot.c
|
--- gnuplot-6.0.0/src/plot.c
|
||||||
+++ gnuplot-6.0.0/src/plot.c 2024-01-08 09:16:58.124450437 +0000
|
+++ gnuplot-6.0.0/src/plot.c 2024-01-08 09:16:58.124450437 +0000
|
||||||
@@ -298,6 +298,22 @@ main(int argc_orig, char **argv)
|
@@ -299,6 +299,22 @@ main(int argc_orig, char **argv)
|
||||||
rl_getc_function = getc_wrapper;
|
rl_getc_function = getc_wrapper;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
BIN
gnuplot-6.0.2.tar.gz
(Stored with Git LFS)
BIN
gnuplot-6.0.2.tar.gz
(Stored with Git LFS)
Binary file not shown.
15
gnuplot-6.0.3-backward_compat.patch
Normal file
15
gnuplot-6.0.3-backward_compat.patch
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
src/command.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- src/command.c
|
||||||
|
+++ src/command.c 2025-06-11 08:00:24.047462255 +0000
|
||||||
|
@@ -2638,7 +2638,7 @@ reread_command()
|
||||||
|
#ifdef BACKWARD_COMPATIBILITY
|
||||||
|
FILE *fp;
|
||||||
|
c_token++;
|
||||||
|
- if (evaluate_inside_functionblock || multiplot || multiplot_playback)
|
||||||
|
+ if (evaluate_inside_functionblock || in_multiplot || multiplot_playback)
|
||||||
|
int_error(NO_CARET, "reread command not possible here");
|
||||||
|
fp = lf_top();
|
||||||
|
if (fp != (FILE *) NULL)
|
3
gnuplot-6.0.3.tar.gz
Normal file
3
gnuplot-6.0.3.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ec52e3af8c4083d4538152b3f13db47f6d29929a3f6ecec5365c834e77f251ab
|
||||||
|
size 7616904
|
@@ -1,3 +1,56 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 11 08:02:18 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Add patch gnuplot-6.0.3-backward_compat.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 11 06:45:38 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Update to gnuplot 6.0.3
|
||||||
|
* NEW backport "contourfill {at base} {fs {no}border}"
|
||||||
|
* NEW backport "save changes <filename>"
|
||||||
|
This variant saves only the differences between the current
|
||||||
|
state and the state at the start of the session.
|
||||||
|
* NEW backport "plot <data> ... if (filter_condition)"
|
||||||
|
Input lines that satisfy the if condition are processed as usual.
|
||||||
|
Lines that fail are essentially ignored.
|
||||||
|
* NEW backport watchpoint label improvements from 6.1
|
||||||
|
Each watch target can have its own label, generated by a user function
|
||||||
|
* CHANGE 3D polygon objects can have per-object fill border properties.
|
||||||
|
The restriction that all 3D polygons share a single set of
|
||||||
|
properties from "set pm3d" remains true for "splot with polygons".
|
||||||
|
* CHANGE multiplot mousing and replot improvements back-ported from version 6.1
|
||||||
|
* CHANGE wxt: remove --with-wx-multithreaded configuration option
|
||||||
|
* CHANGE restrictions on watchpoint function target removed; any function is OK
|
||||||
|
* CHANGE "with hsteps" takes default width from "set boxwidth"
|
||||||
|
* CHANGE column(0) returns an integer (not complex) value
|
||||||
|
* FIX Support for combined hidden3d + pm3d depthorder back-ported from 6.1
|
||||||
|
This allows placing contours on a depth-sorted pm3d surface Bug 2762
|
||||||
|
* FIX "with yerrorbars" error bar span should not affect OUTRANGE Bug 2749
|
||||||
|
* FIX qt: opaque key caused incorrect interactive toggling Bug 2761
|
||||||
|
* FIX 6.0.2 regression in "splot ... using 1:2:3:4 lc palette" Bug 2784
|
||||||
|
* FIX placement of category labels along x-axis of boxplots Bug 2789
|
||||||
|
* FIX qt, cairo: "set colorbox invert" produced empty colorbox
|
||||||
|
* FIX placement of minor tics along logscale axis with narrow range Bug 2765
|
||||||
|
* FIX OK to have missing corners in an image from a sparse matrix Bug 2791
|
||||||
|
* FIX error handling for various cases involving function blocks Bug 2797
|
||||||
|
- Remove patches now upstream
|
||||||
|
* fix4bug1240325.patch
|
||||||
|
* fix4bug1240326.patch
|
||||||
|
* fix4bug1240327.patch
|
||||||
|
* fix4bug1240328.patch
|
||||||
|
* fix4bug1240329.patch
|
||||||
|
* fix4bug1240330.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 28 08:56:43 UTC 2025 - Antonio Larrosa <alarrosa@suse.com>
|
||||||
|
|
||||||
|
- Build with qt6 instead of qt5
|
||||||
|
- Add _constraints file to make sure there's enough disk space
|
||||||
|
for building
|
||||||
|
- Use gcc-13 when building for Leap since qt6 needs a C++17
|
||||||
|
compiler
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
@@ -1,3 +1,56 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 11 08:02:18 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Add patch gnuplot-6.0.3-backward_compat.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 11 06:45:38 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Update to gnuplot 6.0.3
|
||||||
|
* NEW backport "contourfill {at base} {fs {no}border}"
|
||||||
|
* NEW backport "save changes <filename>"
|
||||||
|
This variant saves only the differences between the current
|
||||||
|
state and the state at the start of the session.
|
||||||
|
* NEW backport "plot <data> ... if (filter_condition)"
|
||||||
|
Input lines that satisfy the if condition are processed as usual.
|
||||||
|
Lines that fail are essentially ignored.
|
||||||
|
* NEW backport watchpoint label improvements from 6.1
|
||||||
|
Each watch target can have its own label, generated by a user function
|
||||||
|
* CHANGE 3D polygon objects can have per-object fill border properties.
|
||||||
|
The restriction that all 3D polygons share a single set of
|
||||||
|
properties from "set pm3d" remains true for "splot with polygons".
|
||||||
|
* CHANGE multiplot mousing and replot improvements back-ported from version 6.1
|
||||||
|
* CHANGE wxt: remove --with-wx-multithreaded configuration option
|
||||||
|
* CHANGE restrictions on watchpoint function target removed; any function is OK
|
||||||
|
* CHANGE "with hsteps" takes default width from "set boxwidth"
|
||||||
|
* CHANGE column(0) returns an integer (not complex) value
|
||||||
|
* FIX Support for combined hidden3d + pm3d depthorder back-ported from 6.1
|
||||||
|
This allows placing contours on a depth-sorted pm3d surface Bug 2762
|
||||||
|
* FIX "with yerrorbars" error bar span should not affect OUTRANGE Bug 2749
|
||||||
|
* FIX qt: opaque key caused incorrect interactive toggling Bug 2761
|
||||||
|
* FIX 6.0.2 regression in "splot ... using 1:2:3:4 lc palette" Bug 2784
|
||||||
|
* FIX placement of category labels along x-axis of boxplots Bug 2789
|
||||||
|
* FIX qt, cairo: "set colorbox invert" produced empty colorbox
|
||||||
|
* FIX placement of minor tics along logscale axis with narrow range Bug 2765
|
||||||
|
* FIX OK to have missing corners in an image from a sparse matrix Bug 2791
|
||||||
|
* FIX error handling for various cases involving function blocks Bug 2797
|
||||||
|
- Remove patches now upstream
|
||||||
|
* fix4bug1240325.patch
|
||||||
|
* fix4bug1240326.patch
|
||||||
|
* fix4bug1240327.patch
|
||||||
|
* fix4bug1240328.patch
|
||||||
|
* fix4bug1240329.patch
|
||||||
|
* fix4bug1240330.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 28 08:56:43 UTC 2025 - Antonio Larrosa <alarrosa@suse.com>
|
||||||
|
|
||||||
|
- Build with qt6 instead of qt5
|
||||||
|
- Add _constraints file to make sure there's enough disk space
|
||||||
|
for building
|
||||||
|
- Use gcc-13 when building for Leap since qt6 needs a C++17
|
||||||
|
compiler
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
Mon May 12 12:14:33 UTC 2025 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
42
gnuplot.spec
42
gnuplot.spec
@@ -33,11 +33,16 @@ BuildRequires: ImageMagick
|
|||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: cairo-devel
|
BuildRequires: cairo-devel
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
|
%if 0%{?suse_version} == 1500
|
||||||
|
BuildRequires: gcc13-PIE
|
||||||
|
BuildRequires: gcc13-c++
|
||||||
|
%else
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
|
%endif
|
||||||
BuildRequires: glib2-devel
|
BuildRequires: glib2-devel
|
||||||
BuildRequires: libqt5-linguist-devel
|
|
||||||
BuildRequires: lua-devel
|
BuildRequires: lua-devel
|
||||||
BuildRequires: netpbm
|
BuildRequires: netpbm
|
||||||
|
BuildRequires: qt6-linguist-devel
|
||||||
%if 0%{?is_opensuse}
|
%if 0%{?is_opensuse}
|
||||||
BuildRequires: openspecfun-devel
|
BuildRequires: openspecfun-devel
|
||||||
%endif
|
%endif
|
||||||
@@ -46,11 +51,12 @@ BuildRequires: plotutils-devel
|
|||||||
BuildRequires: readline-devel
|
BuildRequires: readline-devel
|
||||||
BuildRequires: wxGTK3-devel >= 3
|
BuildRequires: wxGTK3-devel >= 3
|
||||||
BuildRequires: zziplib
|
BuildRequires: zziplib
|
||||||
BuildRequires: pkgconfig(Qt5Core)
|
BuildRequires: pkgconfig(Qt6Core)
|
||||||
BuildRequires: pkgconfig(Qt5Gui)
|
BuildRequires: pkgconfig(Qt6Core5Compat)
|
||||||
BuildRequires: pkgconfig(Qt5Network)
|
BuildRequires: pkgconfig(Qt6Gui)
|
||||||
BuildRequires: pkgconfig(Qt5PrintSupport)
|
BuildRequires: pkgconfig(Qt6Network)
|
||||||
BuildRequires: pkgconfig(Qt5Svg)
|
BuildRequires: pkgconfig(Qt6PrintSupport)
|
||||||
|
BuildRequires: pkgconfig(Qt6Svg)
|
||||||
BuildRequires: pkgconfig(caca)
|
BuildRequires: pkgconfig(caca)
|
||||||
BuildRequires: pkgconfig(freetype2)
|
BuildRequires: pkgconfig(freetype2)
|
||||||
BuildRequires: pkgconfig(gdlib)
|
BuildRequires: pkgconfig(gdlib)
|
||||||
@@ -85,7 +91,7 @@ BuildRequires: tex(textgreek.sty)
|
|||||||
BuildRequires: tex(upquote.sty)
|
BuildRequires: tex(upquote.sty)
|
||||||
%endif
|
%endif
|
||||||
URL: https://www.gnuplot.info/
|
URL: https://www.gnuplot.info/
|
||||||
Version: 6.0.2
|
Version: 6.0.3
|
||||||
Release: 0
|
Release: 0
|
||||||
%global underscore 6
|
%global underscore 6
|
||||||
%if "%{flavor}" == ""
|
%if "%{flavor}" == ""
|
||||||
@@ -115,12 +121,7 @@ Patch4: gnuplot-4.6.0-demo.diff
|
|||||||
Patch5: gnuplot-wx3.diff
|
Patch5: gnuplot-wx3.diff
|
||||||
Patch6: gnuplot-QtCore-PIC.dif
|
Patch6: gnuplot-QtCore-PIC.dif
|
||||||
Patch7: gnuplot-PIE.patch
|
Patch7: gnuplot-PIE.patch
|
||||||
Patch25: fix4bug1240325.patch
|
Patch8: gnuplot-6.0.3-backward_compat.patch
|
||||||
Patch26: fix4bug1240326.patch
|
|
||||||
Patch27: fix4bug1240327.patch
|
|
||||||
Patch28: fix4bug1240328.patch
|
|
||||||
Patch29: fix4bug1240329.patch
|
|
||||||
Patch30: fix4bug1240330.patch
|
|
||||||
Patch84: fix4bug1241684.patch
|
Patch84: fix4bug1241684.patch
|
||||||
%define _x11lib %{_libdir}
|
%define _x11lib %{_libdir}
|
||||||
%define _x11data %{_datadir}/X11
|
%define _x11data %{_datadir}/X11
|
||||||
@@ -157,12 +158,7 @@ cp %{_sourcedir}/picins.sty docs
|
|||||||
%patch -P5 -p1 -b .w3x
|
%patch -P5 -p1 -b .w3x
|
||||||
%patch -P6 -p0 -b .pic
|
%patch -P6 -p0 -b .pic
|
||||||
%patch -P7 -p1 -b .pie
|
%patch -P7 -p1 -b .pie
|
||||||
%patch -P25 -p0 -b .p25
|
%patch -P8 -p0 -b .multiplot
|
||||||
%patch -P26 -p0 -b .p26
|
|
||||||
%patch -P27 -p0 -b .p27
|
|
||||||
%patch -P28 -p0 -b .p28
|
|
||||||
%patch -P29 -p0 -b .p29
|
|
||||||
%patch -P30 -p0 -b .p30
|
|
||||||
%patch -P84 -p0 -b .p84
|
%patch -P84 -p0 -b .p84
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@@ -181,6 +177,10 @@ autoreconf -fi
|
|||||||
export CFLAGS="$CFLAGS -DDIST_CONTACT='https://bugzilla.suse.com/'"
|
export CFLAGS="$CFLAGS -DDIST_CONTACT='https://bugzilla.suse.com/'"
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
%if 0%{?suse_version} == 1500
|
||||||
|
export CC=gcc-13
|
||||||
|
export CXX=g++-13
|
||||||
|
%endif
|
||||||
|
|
||||||
%if "%{flavor}" == ""
|
%if "%{flavor}" == ""
|
||||||
mkdir bin
|
mkdir bin
|
||||||
@@ -222,10 +222,10 @@ autoreconf -fi
|
|||||||
--with-metapost \
|
--with-metapost \
|
||||||
--with-regis \
|
--with-regis \
|
||||||
--with-amos=%{_libdir} \
|
--with-amos=%{_libdir} \
|
||||||
--with-qt=qt5
|
--with-qt=qt6
|
||||||
|
|
||||||
%if "%{flavor}" == ""
|
%if "%{flavor}" == ""
|
||||||
make %{?_smp_mflags} UIC=/usr/bin/uic-qt5 MOC=/usr/bin/moc-qt5 RCC=/usr/bin/rcc-qt5 LRELEASE=/usr/bin/lrelease-qt5
|
make %{?_smp_mflags} UIC=%{_qt6_libexecdir}/uic MOC=%{_qt6_libexecdir}/moc RCC=%{_qt6_libexecdir}/rcc LRELEASE=/usr/bin/lrelease6
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if "%{flavor}" == "doc"
|
%if "%{flavor}" == "doc"
|
||||||
|
Reference in New Issue
Block a user