Skip to content
Commits on Source (6)
# @(#) $Id: Makefile.am 19685 2017-05-03 13:13:56Z yeti-dn $
# $Id: Makefile.am 20680 2017-12-18 18:29:14Z yeti-dn $
SUBDIRS = \
m4 \
......@@ -42,9 +42,6 @@ dist-check-maintainer:
@false
endif
docs:
(cd devel-docs && $(MAKE) $(AM_MAKEFLAGS) docs)
configexecincludedir = $(pkglibdir)/include
configexecinclude_DATA = gwyconfig.h
......
......@@ -14,7 +14,7 @@
@SET_MAKE@
# @(#) $Id: Makefile.am 19685 2017-05-03 13:13:56Z yeti-dn $
# $Id: Makefile.am 20680 2017-12-18 18:29:14Z yeti-dn $
VPATH = @srcdir@
am__is_gnu_make = { \
......@@ -1035,9 +1035,6 @@ uninstall-am: uninstall-configexecincludeDATA
@MAINTAINER_MODE_FALSE@ @echo "*** maintainer mode must be enabled in order to make dist"
@MAINTAINER_MODE_FALSE@ @false
docs:
(cd devel-docs && $(MAKE) $(AM_MAKEFLAGS) docs)
.PHONY: docs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
......
This diff is collapsed.
......@@ -22,20 +22,20 @@ Release checklist:
- check full rebuild
disabled=update_version ./utils/gwyddion-night-build
- check and update NEWS, set release data, generate the HTML version
(utils/gen-news.py)
./utils/gen-news.py <NEWS
- generate on-line module list (run ./make-module-list in utils, may need
manual filtering of non-released modules)
- generate stable API docs for gwyddion.net (using gwyddion.net-doc-build SVN
module) and upload them
docbase=$HOME/Projects/Gwyddion/gwyddion/devel-docs ./gendoc.sh
- tag SVN:
svn copy svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/trunk/gwyddion svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/tags/gwyddion-2.29
svn copy svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/trunk/gwyddion svn+ssh://yeti-dn@svn.code.sf.net/p/gwyddion/code/tags/gwyddion-2.50
- build and upload packages
- sign packages and upload signatures
gpg2 -u yeti@gwyddion.net -b gwyddion-2.28.tar.gz
gpg2 -u yeti@gwyddion.net -b gwyddion-2.50.tar.gz
- update gwyddion main page
- publish files at SourceForge
rsync --progress -e ssh gwyddion-2.28.tar.xz yeti-dn@frs.sourceforge.net:/home/frs/project/gwyddion/gwyddion/2.28/
rsync --progress -e ssh gwyddion-2.50.tar.xz yeti-dn@frs.sourceforge.net:/home/frs/project/gwyddion/gwyddion/2.50/
- README.txt with release info should be uploaded from web browser; does not
work well with rsync
- publish project NEWS at Sourceforge in the ‘News’ blog
......@@ -43,4 +43,4 @@ Release checklist:
info)
- send e-mail to the mailing lists
- update the list of supported file formats in the user guide
- update contributors page using ./utils/gen-authors.py web
- update contributors page using ./utils/gen-authors.py AUTHORS web
# @(#) $Id: Makefile.am 20269 2017-08-14 11:21:07Z yeti-dn $
# $Id: Makefile.am 20784 2018-02-01 08:56:52Z yeti-dn $
libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la
libgwymodule = $(top_builddir)/libgwymodule/libgwymodule2.la
......@@ -40,6 +40,7 @@ libgwyapp2include_HEADERS = \
menu.h \
meta.h \
resource-editor.h \
gwyresultsexport.h \
settings.h \
undo.h \
validate.h \
......@@ -84,6 +85,7 @@ MKENUM_HFILES = \
$(srcdir)/gwymoduleutils.h \
$(srcdir)/gwymoduleutils-file.h \
$(srcdir)/gwyplaintool.h \
$(srcdir)/gwyresultsexport.h \
$(srcdir)/gwytool.h \
$(srcdir)/help.h \
$(srcdir)/logging.h \
......@@ -114,7 +116,7 @@ AM_LDFLAGS = $(darwin_ldflags)
# Any iface change C++: 0: A
# Adding ifaces C: R: A++
# Changing ifaces C: R: 0
libversion = -version-info 19:0:19
libversion = -version-info 20:0:20
#libversion = -release @LIBRARY_RELEASE@
libgwyapp2_la_LDFLAGS = @GTKGLEXT_LIBS@ @GIO_LIBS@ @BASIC_LIBS@ $(win32_libs) -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
libgwyapp2_la_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" $(AM_CPPFLAGS)
......@@ -143,6 +145,7 @@ libgwyapp2_la_SOURCES = \
meta.c \
settings.c \
resource-editor.c \
gwyresultsexport.c \
undo.c \
validate.c \
wait.c
......
......@@ -14,10 +14,10 @@
@SET_MAKE@
# @(#) $Id: Makefile.am 20269 2017-08-14 11:21:07Z yeti-dn $
# $Id: Makefile.am 20784 2018-02-01 08:56:52Z yeti-dn $
# Generic glib-mkenum rules.
# @(#) $Id: mkenum.mk 20080 2017-07-24 16:05:52Z yeti-dn $
# $Id: mkenum.mk 20681 2017-12-18 18:37:24Z yeti-dn $
#
# Parameters:
# MKENUM_NAME -- output base name
......@@ -174,7 +174,8 @@ am_libgwyapp2_la_OBJECTS = libgwyapp2_la-app.lo \
libgwyapp2_la-help.lo libgwyapp2_la-log.lo \
libgwyapp2_la-logging.lo libgwyapp2_la-menu.lo \
libgwyapp2_la-meta.lo libgwyapp2_la-settings.lo \
libgwyapp2_la-resource-editor.lo libgwyapp2_la-undo.lo \
libgwyapp2_la-resource-editor.lo \
libgwyapp2_la-gwyresultsexport.lo libgwyapp2_la-undo.lo \
libgwyapp2_la-validate.lo libgwyapp2_la-wait.lo
libgwyapp2_la_OBJECTS = $(am_libgwyapp2_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
......@@ -531,6 +532,7 @@ libgwyapp2include_HEADERS = \
menu.h \
meta.h \
resource-editor.h \
gwyresultsexport.h \
settings.h \
undo.h \
validate.h \
......@@ -565,6 +567,7 @@ MKENUM_HFILES = \
$(srcdir)/gwymoduleutils.h \
$(srcdir)/gwymoduleutils-file.h \
$(srcdir)/gwyplaintool.h \
$(srcdir)/gwyresultsexport.h \
$(srcdir)/gwytool.h \
$(srcdir)/help.h \
$(srcdir)/logging.h \
......@@ -595,7 +598,7 @@ AM_LDFLAGS = $(darwin_ldflags)
# Any iface change C++: 0: A
# Adding ifaces C: R: A++
# Changing ifaces C: R: 0
libversion = -version-info 19:0:19
libversion = -version-info 20:0:20
#libversion = -release @LIBRARY_RELEASE@
libgwyapp2_la_LDFLAGS = @GTKGLEXT_LIBS@ @GIO_LIBS@ @BASIC_LIBS@ $(win32_libs) -export-dynamic $(no_undefined) $(export_symbols) $(libversion)
libgwyapp2_la_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" $(AM_CPPFLAGS)
......@@ -623,6 +626,7 @@ libgwyapp2_la_SOURCES = \
meta.c \
settings.c \
resource-editor.c \
gwyresultsexport.c \
undo.c \
validate.c \
wait.c
......@@ -798,6 +802,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-gwymoduleutils-file.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-gwymoduleutils.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-gwyplaintool.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-gwyresultsexport.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-gwytool.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-help.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgwyapp2_la-log.Plo@am__quote@
......@@ -995,6 +1000,13 @@ libgwyapp2_la-resource-editor.lo: resource-editor.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgwyapp2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgwyapp2_la-resource-editor.lo `test -f 'resource-editor.c' || echo '$(srcdir)/'`resource-editor.c
libgwyapp2_la-gwyresultsexport.lo: gwyresultsexport.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgwyapp2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgwyapp2_la-gwyresultsexport.lo -MD -MP -MF $(DEPDIR)/libgwyapp2_la-gwyresultsexport.Tpo -c -o libgwyapp2_la-gwyresultsexport.lo `test -f 'gwyresultsexport.c' || echo '$(srcdir)/'`gwyresultsexport.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgwyapp2_la-gwyresultsexport.Tpo $(DEPDIR)/libgwyapp2_la-gwyresultsexport.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwyresultsexport.c' object='libgwyapp2_la-gwyresultsexport.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgwyapp2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgwyapp2_la-gwyresultsexport.lo `test -f 'gwyresultsexport.c' || echo '$(srcdir)/'`gwyresultsexport.c
libgwyapp2_la-undo.lo: undo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgwyapp2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgwyapp2_la-undo.lo -MD -MP -MF $(DEPDIR)/libgwyapp2_la-undo.Tpo -c -o libgwyapp2_la-undo.lo `test -f 'undo.c' || echo '$(srcdir)/'`undo.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgwyapp2_la-undo.Tpo $(DEPDIR)/libgwyapp2_la-undo.Plo
......
......@@ -21,4 +21,4 @@ Data Containers:
"metadata-browser" If set, there is already a metadata browser active for
this data and the pointer is its window widget.
# @(#) $Id: README.objdata 6593 2006-09-17 19:35:51Z yeti-dn $
# $Id: README.objdata 20681 2017-12-18 18:37:24Z yeti-dn $
/*
* @(#) $Id: about.c 20090 2017-07-26 09:11:23Z yeti-dn $
* $Id: about.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2003 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: app.c 20119 2017-07-31 10:36:59Z yeti-dn $
* $Id: app.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2003-2006,2013-2017 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......@@ -27,6 +27,7 @@
#include <gtk/gtk.h>
#include <libgwyddion/gwymacros.h>
#include <libgwyddion/gwymd5.h>
#include <libprocess/gwyprocess.h>
#include <libgwymodule/gwymodule.h>
#include <libgwydgets/gwydgets.h>
......@@ -129,6 +130,7 @@ static void restore_data_window_zoom (GwyDataWindow *data_win
static void restore_other_window_size (GtkWindow *window,
GwyContainer *container,
const gchar *prefix);
static gint64 monitor_config_checksum (GdkScreen *screen);
/* Must match Gwy3DViewLabel */
static const struct {
......@@ -2320,6 +2322,7 @@ gwy_app_save_window_position(GtkWindow *window,
gint x, y, w, h, scw, sch;
guint len;
gchar *key;
gint64 mconf;
g_return_if_fail(GTK_IS_WINDOW(window));
g_return_if_fail(prefix);
......@@ -2338,12 +2341,15 @@ gwy_app_save_window_position(GtkWindow *window,
/* FIXME: read the gtk_window_get_position() docs about how this is
* a broken approach */
if (position) {
mconf = monitor_config_checksum(screen);
gtk_window_get_position(window, &x, &y);
if (x >= 0 && y >= 0 && x+1 < scw && y+1 < sch) {
strcpy(key + len, "/position/x");
gwy_container_set_int32_by_name(settings, key, x);
strcpy(key + len, "/position/y");
gwy_container_set_int32_by_name(settings, key, y);
strcpy(key + len, "/position/mconf");
gwy_container_set_int64_by_name(settings, key, mconf);
}
}
if (size) {
......@@ -2388,6 +2394,7 @@ gwy_app_restore_window_position(GtkWindow *window,
gint x, y, w, h, scw, sch;
guint len;
gchar *key;
gint64 mconf, savedmconf = 0;
g_return_if_fail(GTK_IS_WINDOW(window));
g_return_if_fail(prefix);
......@@ -2399,6 +2406,7 @@ gwy_app_restore_window_position(GtkWindow *window,
settings = gwy_app_settings_get();
screen = gtk_window_get_screen(window);
mconf = monitor_config_checksum(screen);
scw = gdk_screen_get_width(screen);
sch = gdk_screen_get_height(screen);
x = y = w = h = -1;
......@@ -2406,11 +2414,13 @@ gwy_app_restore_window_position(GtkWindow *window,
gwy_container_gis_int32_by_name(settings, key, &x);
strcpy(key + len, "/position/y");
gwy_container_gis_int32_by_name(settings, key, &y);
strcpy(key + len, "/position/mconf");
gwy_container_gis_int64_by_name(settings, key, &savedmconf);
strcpy(key + len, "/position/width");
gwy_container_gis_int32_by_name(settings, key, &w);
strcpy(key + len, "/position/height");
gwy_container_gis_int32_by_name(settings, key, &h);
if (x >= 0 && y >= 0 && x+1 < scw && y+1 < sch)
if (mconf == savedmconf && x >= 0 && y >= 0 && x+1 < scw && y+1 < sch)
gtk_window_move(window, x, y);
if (w > 1 && h > 1) {
if (grow_only) {
......@@ -2557,6 +2567,44 @@ restore_other_window_size(GtkWindow *window,
gtk_window_set_default_size(window, w, h);
}
/* We probably do not have to this repeatedly but GDK has the monitor
* properties tabulated so it is just a few extra function calls... */
static gint64
monitor_config_checksum(GdkScreen *screen)
{
guint n, i;
GdkRectangle *mdims, mdim0;
guchar digest[16];
guint64 r;
if (!screen)
return 0;
n = gdk_screen_get_n_monitors(screen);
if (!n)
return 0;
if (n == 1)
mdims = &mdim0;
else
mdims = g_new(GdkRectangle, n);
for (i = 0; i < n; i++)
gdk_screen_get_monitor_geometry(screen, i, mdims + i);
gwy_md5_get_digest((const gchar*)mdims, n*sizeof(GdkRectangle), digest);
if (n != 1)
g_free(mdims);
r = digest[0] & 0x7f;
for (i = 1; i < 8; i++) {
r <<= 8ul;
r |= digest[i];
}
return r;
}
gint
_gwy_app_get_n_recent_files(void)
{
......
/*
* @(#) $Id: app.h 18098 2016-01-17 19:50:30Z yeti-dn $
* $Id: app.h 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: data-browser-aux.c 19329 2016-11-29 15:32:12Z yeti-dn $
* $Id: data-browser-aux.c 20677 2017-12-18 18:22:52Z yeti-dn $
* Copyright (C) 2006-2016 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......@@ -1546,19 +1546,6 @@ gather_ids_for_unmanaged(gpointer key,
g_array_append_val(fidata->ids, id);
}
static gint
compare_int(gconstpointer a,
gconstpointer b)
{
gint ia = *(const gint*)a, ib = *(const gint*)b;
if (ia < ib)
return -1;
if (ia > ib)
return 1;
return 0;
}
gint*
_gwy_app_find_ids_unmanaged(GwyContainer *data,
GwyAppKeyType keytype, GType gtype)
......@@ -1570,7 +1557,8 @@ _gwy_app_find_ids_unmanaged(GwyContainer *data,
fidata.gtype = gtype;
fidata.ids = g_array_new(FALSE, FALSE, sizeof(gint));
gwy_container_foreach(data, NULL, &gather_ids_for_unmanaged, &fidata);
g_array_sort(fidata.ids, compare_int);
/* The array can only contain positive values. */
gwy_guint_sort(fidata.ids->len, (guint*)fidata.ids->data);
g_array_append_val(fidata.ids, none);
return (gint*)g_array_free(fidata.ids, FALSE);
......@@ -1581,10 +1569,6 @@ sync_one_data_item(GwyContainer *source, GwyContainer *dest,
gint from_id, gint to_id,
GwyDataItem what, gboolean delete_too)
{
/* FIXME: copy ALL selections */
static const gchar *sel_keys[] = {
"point", "pointer", "line", "rectangle", "ellipse", "lattice", "path",
};
static const gchar *cal_keys[] = {
"cal_xerr", "cal_yerr", "cal_zerr", "cal_xunc", "cal_yunc", "cal_zunc",
};
......@@ -1593,8 +1577,9 @@ sync_one_data_item(GwyContainer *source, GwyContainer *dest,
gchar key_to[40];
const guchar *name;
GwyRGBA rgba;
guint enumval;
guint enumval, flen, tlen;
gboolean boolval;
GQuark *keys;
GObject *obj;
gdouble dbl;
guint i;
......@@ -1691,20 +1676,29 @@ sync_one_data_item(GwyContainer *source, GwyContainer *dest,
break;
case GWY_DATA_ITEM_SELECTIONS:
for (i = 0; i < G_N_ELEMENTS(sel_keys); i++) {
g_snprintf(key_from, sizeof(key_from), "/%d/select/%s",
from_id, sel_keys[i]);
g_snprintf(key_to, sizeof(key_to), "/%d/select/%s",
to_id, sel_keys[i]);
if (gwy_container_gis_object_by_name(source, key_from, &obj)
&& gwy_selection_get_data(GWY_SELECTION(obj), NULL)) {
g_snprintf(key_from, sizeof(key_from), "/%d/select/", from_id);
g_snprintf(key_to, sizeof(key_to), "/%d/select/", to_id);
if (delete_too)
gwy_container_remove_by_prefix(dest, key_to);
flen = strlen(key_from);
tlen = strlen(key_to);
keys = gwy_container_keys_with_prefix(source, key_from, NULL);
for (i = 0; i < keys[i]; i++) {
if (gwy_container_value_type(source, keys[i]) != G_TYPE_OBJECT)
continue;
obj = gwy_container_get_object(source, keys[i]);
if (!GWY_IS_SELECTION(obj))
continue;
name = g_quark_to_string(keys[i]) + flen;
if (strlen(name) >= sizeof(key_to)-tlen)
continue;
memcpy(key_to + tlen, name, strlen(name)+1);
obj = gwy_serializable_duplicate(obj);
gwy_container_set_object_by_name(dest, key_to, obj);
g_object_unref(obj);
}
else if (delete_too)
gwy_container_remove_by_name(dest, key_to);
}
g_free(keys);
break;
default:
......
/*
* @(#) $Id: data-browser.c 20177 2017-08-07 08:31:36Z yeti-dn $
* $Id: data-browser.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2006-2016 David Necas (Yeti), Petr Klapetek, Chris Anderson
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net, sidewinderasu@gmail.com.
*
......
/*
* @(#) $Id: data-browser.h 19329 2016-11-29 15:32:12Z yeti-dn $
* $Id: data-browser.h 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2006-2015 David Necas (Yeti), Petr Klapetek, Chris Anderson
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net, sidewinderasu@gmail.com.
*
......
/*
* @(#) $Id: datachooser.c 19157 2016-11-01 11:52:14Z yeti-dn $
* $Id: datachooser.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2006-2016 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: datachooser.h 19157 2016-11-01 11:52:14Z yeti-dn $
* $Id: datachooser.h 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2006-2016 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: file.c 19456 2017-02-07 12:39:07Z yeti-dn $
* $Id: file.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: file.h 18241 2016-01-28 14:16:33Z yeti-dn $
* $Id: file.h 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: filelist.c 19043 2016-10-08 18:58:43Z yeti-dn $
* $Id: filelist.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2004-2016 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: filelist.h 15598 2013-11-11 12:33:32Z yeti-dn $
* $Id: filelist.h 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2004 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......
/*
* @(#) $Id: funcuse.c 17718 2015-11-06 08:04:04Z pecold $
* $Id: funcuse.c 20678 2017-12-18 18:26:55Z yeti-dn $
* Copyright (C) 2006 David Necas (Yeti), Petr Klapetek.
* E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
*
......