]> sigrok.org Git - libsigrok.git/log
libsigrok.git
12 years agosr: zp: Add missing <string.h> #include.
Uwe Hermann [Tue, 31 Jan 2012 00:54:08 +0000 (01:54 +0100)]
sr: zp: Add missing <string.h> #include.

12 years agoAdd sr_device_get_info
Anatoly Sokolov [Sun, 29 Jan 2012 12:56:06 +0000 (16:56 +0400)]
Add sr_device_get_info

12 years agosr: zeroplus: Use device-specific context.
Uwe Hermann [Sun, 29 Jan 2012 18:14:25 +0000 (19:14 +0100)]
sr: zeroplus: Use device-specific context.

Make the zeroplus driver use a "struct zp" with per-device-instance
data (such as samplerate, trigger settings, and so on), like the other
drivers do.

Also, add a few more error checks.

12 years agosr: la8: Fix typo.
Uwe Hermann [Sun, 29 Jan 2012 11:47:53 +0000 (12:47 +0100)]
sr: la8: Fix typo.

12 years agosr: zeroplus: Fix a segfault.
Uwe Hermann [Sat, 28 Jan 2012 22:29:28 +0000 (23:29 +0100)]
sr: zeroplus: Fix a segfault.

12 years agoUpdate/enforce/document our build requirements.
Uwe Hermann [Sat, 28 Jan 2012 20:26:56 +0000 (21:26 +0100)]
Update/enforce/document our build requirements.

12 years agosr: sigrok.h.in: Set SR_HWCAP_DUMMY to 0 explicitly.
Uwe Hermann [Sat, 28 Jan 2012 18:42:04 +0000 (19:42 +0100)]
sr: sigrok.h.in: Set SR_HWCAP_DUMMY to 0 explicitly.

12 years agosr: sigrok.h.in: Drop obsolete 'GSList *analyzers'.
Uwe Hermann [Sat, 28 Jan 2012 18:40:05 +0000 (19:40 +0100)]
sr: sigrok.h.in: Drop obsolete 'GSList *analyzers'.

12 years agosr: Drop analog left-overs from sigrok.h.
Uwe Hermann [Sat, 28 Jan 2012 18:23:09 +0000 (19:23 +0100)]
sr: Drop analog left-overs from sigrok.h.

For now, there's no analog/scope support in sigrok yet (will be added
later), so remove any such items from the public API (sigrok.h).

Having '#if defined(HAVE_LA_ALSA)' in sigrok.h is a bug anyway, the API
must not have anything device-dependent in general, and sigrok.h
specifically must not have any #ifdefs for specific hardware.

12 years agoadd SR_HWCAP_DEMO_DEVICE capability
Anatoly Sokolov [Sat, 21 Jan 2012 14:34:11 +0000 (18:34 +0400)]
add SR_HWCAP_DEMO_DEVICE capability

12 years agolink-mso19: Fixed led toggling (the bit masking was not being proprly done).
Renato Caldas [Thu, 12 Jan 2012 11:50:50 +0000 (11:50 +0000)]
link-mso19: Fixed led toggling (the bit masking was not being proprly done).

12 years agolink-mso19: Prevent double free errors when freeing sdi->priv.
Renato Caldas [Wed, 18 Jan 2012 16:03:39 +0000 (16:03 +0000)]
link-mso19: Prevent double free errors when freeing sdi->priv.

12 years agolink-mso19: Add debug messages.
Renato Caldas [Wed, 18 Jan 2012 12:09:36 +0000 (12:09 +0000)]
link-mso19: Add debug messages.

12 years agolink-mso19: Properly initialize the protocol trigger block
Renato Caldas [Tue, 17 Jan 2012 13:41:38 +0000 (13:41 +0000)]
link-mso19: Properly initialize the protocol trigger block

12 years agolink-mso19: Added new register definitions and renamed variables to reflect new findings.
Renato Caldas [Tue, 17 Jan 2012 13:16:41 +0000 (13:16 +0000)]
link-mso19: Added new register definitions and renamed variables to reflect new findings.

12 years agolink-mso19: Added struct definitions for the pattern generator config and the protoco...
Renato Caldas [Sat, 14 Jan 2012 12:46:27 +0000 (12:46 +0000)]
link-mso19: Added struct definitions for the pattern generator config and the protocol trigger config.

12 years agosr: g_free()/g_string_free() can handle NULL input.
Uwe Hermann [Wed, 18 Jan 2012 23:32:02 +0000 (00:32 +0100)]
sr: g_free()/g_string_free() can handle NULL input.

12 years agoclean up some dead code
Bert Vermeulen [Sun, 15 Jan 2012 22:14:45 +0000 (23:14 +0100)]
clean up some dead code

12 years agosr: s/g_message/sr_dbg/.
Uwe Hermann [Tue, 10 Jan 2012 21:16:41 +0000 (22:16 +0100)]
sr: s/g_message/sr_dbg/.

libsigrok should only use sr_*() for debug output.

12 years agoclean up drivers at the end of a session, and fix session file init.
Bert Vermeulen [Sun, 8 Jan 2012 21:05:00 +0000 (22:05 +0100)]
clean up drivers at the end of a session, and fix session file init.

12 years agosr: session: Make most functions return int.
Uwe Hermann [Sat, 7 Jan 2012 16:08:54 +0000 (17:08 +0100)]
sr: session: Make most functions return int.

This allows us to return error codes etc.

Add a little more error handling.

12 years agoMore .gitignore files cleanup.
Uwe Hermann [Sat, 7 Jan 2012 13:15:10 +0000 (14:15 +0100)]
More .gitignore files cleanup.

12 years agoremove obsolete libsigrokdecode struct
Bert Vermeulen [Sat, 7 Jan 2012 01:13:05 +0000 (02:13 +0100)]
remove obsolete libsigrokdecode struct

12 years agosr: Consistently use 512kB as default chunk size.
Uwe Hermann [Fri, 6 Jan 2012 15:20:28 +0000 (16:20 +0100)]
sr: Consistently use 512kB as default chunk size.

12 years agoAdded "autostuff" to the .gitignore.
Renato Caldas [Fri, 6 Jan 2012 11:07:37 +0000 (11:07 +0000)]
Added "autostuff" to the .gitignore.

12 years agosession: Fixed error reporting.
Renato Caldas [Fri, 6 Jan 2012 00:04:29 +0000 (00:04 +0000)]
session: Fixed error reporting.

12 years agomso-19: Fix whitespace.
Uwe Hermann [Fri, 6 Jan 2012 00:05:55 +0000 (01:05 +0100)]
mso-19: Fix whitespace.

12 years agolink-mso19: fixed segmentation fault.
Renato Caldas [Thu, 5 Jan 2012 23:37:54 +0000 (23:37 +0000)]
link-mso19: fixed segmentation fault.

12 years agolink-mso19: Updated to the current structs (fixed compilation).
Renato Caldas [Thu, 5 Jan 2012 19:42:06 +0000 (19:42 +0000)]
link-mso19: Updated to the current structs (fixed compilation).

12 years agoudev: Add missing USB IDs for some devices.
Uwe Hermann [Wed, 4 Jan 2012 15:45:53 +0000 (16:45 +0100)]
udev: Add missing USB IDs for some devices.

12 years agoA few more fixes for configure.ac files.
Uwe Hermann [Wed, 4 Jan 2012 14:26:41 +0000 (15:26 +0100)]
A few more fixes for configure.ac files.

Add missing checks and quotes, remove superfluous checks, etc.

12 years agosr/srd: Add Doxyfile to the tarball.
Uwe Hermann [Wed, 4 Jan 2012 01:50:26 +0000 (02:50 +0100)]
sr/srd: Add Doxyfile to the tarball.

12 years agosrd: Show config summary, libs, and Python info.
Uwe Hermann [Wed, 4 Jan 2012 01:41:33 +0000 (02:41 +0100)]
srd: Show config summary, libs, and Python info.

12 years agosr: configure.ac: Print more summary info.
Uwe Hermann [Tue, 3 Jan 2012 23:49:21 +0000 (00:49 +0100)]
sr: configure.ac: Print more summary info.

 - Package version (major.minor.micro)

 - Library version (current:revision:age)

 - Installation prefix (usually /usr/local)

 - Detected libraries and their versions (only for pkg-config libs)

12 years agosr: configure.ac: Fix version number magic.
Uwe Hermann [Tue, 3 Jan 2012 23:05:43 +0000 (00:05 +0100)]
sr: configure.ac: Fix version number magic.

12 years agoPut most autotools files into autostuff/.
Uwe Hermann [Tue, 3 Jan 2012 20:55:48 +0000 (21:55 +0100)]
Put most autotools files into autostuff/.

This yields a slightly more "tidy" top-level directory.

12 years agosr: Put files into .../share/libsigrok.
Uwe Hermann [Tue, 3 Jan 2012 19:06:36 +0000 (20:06 +0100)]
sr: Put files into .../share/libsigrok.

12 years agosr: Remove useless filename prefixes.
Uwe Hermann [Tue, 3 Jan 2012 19:01:02 +0000 (20:01 +0100)]
sr: Remove useless filename prefixes.

12 years agosr/srd: Fix left-over #includes.
Uwe Hermann [Tue, 3 Jan 2012 18:56:01 +0000 (19:56 +0100)]
sr/srd: Fix left-over #includes.

The libs themselves should use #include "sigrok.h" etc., while the
frontends must use #include <sigrok.h> and so on.

12 years agosr: Drop some obsolete and commented out code.
Uwe Hermann [Mon, 2 Jan 2012 13:25:52 +0000 (14:25 +0100)]
sr: Drop some obsolete and commented out code.

12 years agosr: session: Add docs and some error checks.
Uwe Hermann [Mon, 2 Jan 2012 13:15:25 +0000 (14:15 +0100)]
sr: session: Add docs and some error checks.

12 years agoSplit README, add appropriate ones per-project.
Uwe Hermann [Fri, 30 Dec 2011 21:38:25 +0000 (22:38 +0100)]
Split README, add appropriate ones per-project.

12 years agoUpdate/fix .gitignore files.
Uwe Hermann [Fri, 30 Dec 2011 21:12:37 +0000 (22:12 +0100)]
Update/fix .gitignore files.

12 years agosr/srd: Remove/fix non-applicable autotools stuff.
Uwe Hermann [Fri, 30 Dec 2011 09:50:00 +0000 (10:50 +0100)]
sr/srd: Remove/fix non-applicable autotools stuff.

12 years agosr/srd: Move some files to their resp. dirs.
Uwe Hermann [Fri, 30 Dec 2011 09:42:39 +0000 (10:42 +0100)]
sr/srd: Move some files to their resp. dirs.

12 years agoMove most contrib/ stuff to libsigrok.
Uwe Hermann [Thu, 29 Dec 2011 12:05:24 +0000 (13:05 +0100)]
Move most contrib/ stuff to libsigrok.

The udev rules file is libsigrok-specific, the gnuplot files too.

The nsis files stay in the top-level contrib/ for now, they're not
really part of any of the (sub-)projects, but rather are used to create
a single Windows .exe installer for all of them.

12 years agoprobe names: Fix cosmetics, add docs, fix off-by-one.
Uwe Hermann [Thu, 29 Dec 2011 18:50:14 +0000 (19:50 +0100)]
probe names: Fix cosmetics, add docs, fix off-by-one.

12 years agoMove the probe naming to the creator of the device, and let each driver name its...
Kristoffer Sjöberg [Thu, 29 Dec 2011 16:04:31 +0000 (17:04 +0100)]
Move the probe naming to the creator of the device, and let each driver name its own probes.

12 years agoFix outdated ezusb_install_firmware() prototype.
Uwe Hermann [Wed, 28 Dec 2011 22:11:52 +0000 (23:11 +0100)]
Fix outdated ezusb_install_firmware() prototype.

12 years agolibsigrok: Fix #includes.
Uwe Hermann [Wed, 28 Dec 2011 22:07:08 +0000 (23:07 +0100)]
libsigrok: Fix #includes.

In the lib, we should only #include "sigrok.h" or "sigrok-internal.h",
but not the (possibly installed and thus different/older versions) via
<sigrok.h> or <sigrok-internal.h>.

Frontends should of course use <sigrok.h> and <sigrok-internal.h>.

12 years agoMake more variables/functions static and non-global.
Uwe Hermann [Wed, 28 Dec 2011 21:55:21 +0000 (22:55 +0100)]
Make more variables/functions static and non-global.

The 'GSList *devices' from device.c was actually really global (i.e.,
listed in sigrok.h), which is now fixed.

12 years agoDrop unused 'global' struct/variable.
Uwe Hermann [Wed, 28 Dec 2011 20:38:56 +0000 (21:38 +0100)]
Drop unused 'global' struct/variable.

The libs shouldn't have any (externally visible) globals anyway.

12 years agosigrok-proto.h: Drop obsolete prototype, move other one.
Uwe Hermann [Wed, 28 Dec 2011 20:37:37 +0000 (21:37 +0100)]
sigrok-proto.h: Drop obsolete prototype, move other one.

12 years agodevice: Make some parameters const.
Uwe Hermann [Wed, 28 Dec 2011 20:34:37 +0000 (21:34 +0100)]
device: Make some parameters const.

12 years agodevice: Change some functions to return int.
Uwe Hermann [Wed, 28 Dec 2011 16:16:33 +0000 (17:16 +0100)]
device: Change some functions to return int.

The callers of these functions are yet to be changed so that they
actually check the return values and handle errors appropriately.

12 years agodevice: Add Doxygen comments, improve error handling.
Uwe Hermann [Wed, 28 Dec 2011 15:19:15 +0000 (16:19 +0100)]
device: Add Doxygen comments, improve error handling.

 - Add Doxygen comments for all functions (some TODOs remain).

 - Check return code of more functions, handle invalid input.

12 years agomake time/duration work, at least when loading from a session file
Bert Vermeulen [Thu, 15 Dec 2011 02:31:31 +0000 (03:31 +0100)]
make time/duration work, at least when loading from a session file

PD decode() call now takes 3 arguments: timeoffset, duration, data
as per the current API specification.

12 years agodatastore.c: Improve error handling and docs.
Uwe Hermann [Sun, 25 Dec 2011 18:59:15 +0000 (19:59 +0100)]
datastore.c: Improve error handling and docs.

 - Add Doxygen comments for all functions (some TODOs remain).

 - Check for invalid input parameters (such as NULL pointers etc).

 - Return SR_ERR_ARG upon invalid input parameters.

 - Make sr_datastore_put() return int instead of void, so we can pass
   an error code (SR_OK, SR_ERR_MALLOC, and so on) to the caller.

12 years agosr_filter_probes(): Check for too many probes.
Uwe Hermann [Fri, 23 Dec 2011 14:26:54 +0000 (15:26 +0100)]
sr_filter_probes(): Check for too many probes.

Return SR_ERR_ARG if the number of enabled probes is higher than the
requested unit size supports.

12 years agoImprove sr_filter_probes error handling and docs.
Uwe Hermann [Thu, 22 Dec 2011 13:10:16 +0000 (14:10 +0100)]
Improve sr_filter_probes error handling and docs.

 - Much more elaborate doxygen comments for the function and its
   parameters, allowed input values, and so on.

 - Make 'probelist' const, the function doesn't modify it.

 - Check for invalid inputs such as NULL pointers.

 - Use g_try_malloc() and g_free() for the output buffer. Document who
   is expected to g_free() the buffer.

12 years agolibsigrok: Quickfix for a segfault in ChronoVu LA8.
Uwe Hermann [Sun, 4 Dec 2011 17:33:29 +0000 (18:33 +0100)]
libsigrok: Quickfix for a segfault in ChronoVu LA8.

13 years agosrd: Pass samplerate to decoder in metadata.
Gareth McMullin [Mon, 28 Nov 2011 08:52:35 +0000 (21:52 +1300)]
srd: Pass samplerate to decoder in metadata.

13 years agofix CLI size string specification
Bert Vermeulen [Sun, 27 Nov 2011 18:31:25 +0000 (19:31 +0100)]
fix CLI size string specification

accept "hz" as optional qualifier but nothing else
properly return an error instead of quietly returning zero size

13 years agoOther method to avoid "unused var" compiler warnings.
Uwe Hermann [Thu, 24 Nov 2011 21:57:48 +0000 (22:57 +0100)]
Other method to avoid "unused var" compiler warnings.

The '(void)varname' method is nicer than 'varname = varname' and also
prevents warnings when compiling sigrok with clang instead of gcc.

13 years agoAdd missing #includes to avoid clang warnings.
Uwe Hermann [Thu, 24 Nov 2011 21:42:02 +0000 (22:42 +0100)]
Add missing #includes to avoid clang warnings.

13 years agola8: device not found during init() scan is not an error
Bert Vermeulen [Sun, 20 Nov 2011 02:16:33 +0000 (03:16 +0100)]
la8: device not found during init() scan is not an error

fix some hardware plugin semantics

13 years agolibsigrok: glib-2.0 is a hard requirement.
Uwe Hermann [Sat, 19 Nov 2011 15:19:24 +0000 (16:19 +0100)]
libsigrok: glib-2.0 is a hard requirement.

13 years agoChanged SR_T_NULL to SR_T_BOOL and adjusted RLE option.
Gareth McMullin [Sat, 19 Nov 2011 00:41:41 +0000 (13:41 +1300)]
Changed SR_T_NULL to SR_T_BOOL and adjusted RLE option.

13 years agoConsistently use __func__ instead of __FUNCTION__.
Uwe Hermann [Thu, 17 Nov 2011 22:00:33 +0000 (23:00 +0100)]
Consistently use __func__ instead of __FUNCTION__.

The __func__ form is standardized and more portable.

13 years agolibsigrok: Use sr_err() et al instead of printf.
Uwe Hermann [Thu, 17 Nov 2011 21:54:17 +0000 (22:54 +0100)]
libsigrok: Use sr_err() et al instead of printf.

13 years agoFixed a crash when loading a second session file.
Gareth McMullin [Thu, 17 Nov 2011 08:18:46 +0000 (21:18 +1300)]
Fixed a crash when loading a second session file.

13 years agosigrok.h: Remove SIGROK_*VERSION #defines again.
Uwe Hermann [Tue, 15 Nov 2011 21:46:57 +0000 (22:46 +0100)]
sigrok.h: Remove SIGROK_*VERSION #defines again.

These version numbers represent the sigrok version (i.e., the version
of the tarball, such as "sigrok-0.2.0.tar.gz"), but _not_ the libsigrok
(libtool) library/API/ABI versions. Thus, they should not be in
libsigrok's include file (sigrok.h).

13 years agoFix some compiler warnings.
Uwe Hermann [Tue, 15 Nov 2011 20:05:40 +0000 (21:05 +0100)]
Fix some compiler warnings.

13 years agolibsigrok.pc: Add Required.private field entries.
Uwe Hermann [Tue, 15 Nov 2011 00:11:27 +0000 (01:11 +0100)]
libsigrok.pc: Add Required.private field entries.

The "Required.private:" field in pkg-config .pc files is used for
declaring that we need the listed libs (pkg-config packages) for
static linking, but not for dynamic linking.
I.e., the "Required.private:" field should be used for libs which we
use internally in libsigrok, but which we do not "expose" ourselves.

For now all libs are listed as "Required.private:" instead of
"Required:", but this may not be entirely correct and needs to be
checked carefully at some later date.

13 years agoRemove IO source if callback returns FALSE.
Gareth McMullin [Sat, 5 Nov 2011 22:44:25 +0000 (11:44 +1300)]
Remove IO source if callback returns FALSE.

13 years agosigrok.h: Add SIGROK_{MAJOR,MINOR,MICRO,}_VERSION #defines.
Uwe Hermann [Fri, 29 Apr 2011 17:27:32 +0000 (19:27 +0200)]
sigrok.h: Add SIGROK_{MAJOR,MINOR,MICRO,}_VERSION #defines.

13 years agoOLS: Calculate actual sample rate used.
Gareth McMullin [Sun, 30 Oct 2011 01:25:24 +0000 (14:25 +1300)]
OLS: Calculate actual sample rate used.

13 years agools: Minor whitespace and coding style fixes.
Uwe Hermann [Sun, 30 Oct 2011 00:10:32 +0000 (02:10 +0200)]
ols: Minor whitespace and coding style fixes.

13 years agoRun-Length Encoding support for the OLS.
Gareth McMullin [Sat, 29 Oct 2011 02:57:17 +0000 (15:57 +1300)]
Run-Length Encoding support for the OLS.

13 years agoPrevent reading past end of OLS hardware buffer.
Gareth McMullin [Sat, 29 Oct 2011 02:21:16 +0000 (15:21 +1300)]
Prevent reading past end of OLS hardware buffer.

13 years agoMac OS X build fixes
Jerry [Mon, 20 Jun 2011 21:43:44 +0000 (23:43 +0200)]
Mac OS X build fixes

13 years agosaleae-logic: fix timing on packets when triggering is used
Bert Vermeulen [Mon, 20 Jun 2011 09:43:34 +0000 (11:43 +0200)]
saleae-logic: fix timing on packets when triggering is used

13 years agobetter session bus logging
Bert Vermeulen [Mon, 20 Jun 2011 09:42:43 +0000 (11:42 +0200)]
better session bus logging

13 years agouse new datafeed packet format
Bert Vermeulen [Sun, 19 Jun 2011 12:28:50 +0000 (14:28 +0200)]
use new datafeed packet format

13 years agonew datafeed packet format
Bert Vermeulen [Sun, 19 Jun 2011 00:35:23 +0000 (02:35 +0200)]
new datafeed packet format

struct sr_datafeed_packet now has timeoffset and duration fields,
expressed in picoseconds (1/10^12 seconds)
length and unitsize are now in a separate struct sr_datafeed_logic

13 years agofix parameter type
Bert Vermeulen [Sat, 18 Jun 2011 22:55:36 +0000 (00:55 +0200)]
fix parameter type

13 years agowhitespace
Bert Vermeulen [Sun, 12 Jun 2011 16:07:15 +0000 (18:07 +0200)]
whitespace

13 years agosupport for multiple FX2 devices
Bert Vermeulen [Sun, 12 Jun 2011 16:04:19 +0000 (18:04 +0200)]
support for multiple FX2 devices

13 years agosaleae-logic: use new logging system
Bert Vermeulen [Sun, 5 Jun 2011 00:08:08 +0000 (02:08 +0200)]
saleae-logic: use new logging system

13 years agosaleae-logic: support for other FX2 devices (bare FX2)
Bert Vermeulen [Sat, 4 Jun 2011 21:20:00 +0000 (23:20 +0200)]
saleae-logic: support for other FX2 devices (bare FX2)

This enables support for devices that have a different VID/PID
than the Saleae Logic, and yet another after firmware upload.

After firmware upload is checked every 100ms whether it came back,
instead of always waiting for 2 seconds.

If the kernel attaches a driver to a device we know, detact it first.

13 years agobetter cleanup of device/plugin resources
Bert Vermeulen [Mon, 4 Apr 2011 03:13:29 +0000 (05:13 +0200)]
better cleanup of device/plugin resources

13 years agoLA8: Remove trailing whitespace.
Uwe Hermann [Sun, 8 May 2011 22:59:41 +0000 (00:59 +0200)]
LA8: Remove trailing whitespace.

13 years agoLA8: Use sr_spew() where appropriate.
Uwe Hermann [Sun, 8 May 2011 22:54:59 +0000 (00:54 +0200)]
LA8: Use sr_spew() where appropriate.

13 years agoLA8: Improve trigger support and debug output.
Uwe Hermann [Sun, 8 May 2011 22:52:55 +0000 (00:52 +0200)]
LA8: Improve trigger support and debug output.

13 years agoAdd sr_spew/SR_LOG_SPEW for even more debug output.
Uwe Hermann [Sun, 8 May 2011 18:26:22 +0000 (20:26 +0200)]
Add sr_spew/SR_LOG_SPEW for even more debug output.

This is meant for really extensive debug output which can slow down
operation significantly and should thus only be enabled if really needed.

13 years agoLA8: Eliminate magic numbers.
Uwe Hermann [Sun, 8 May 2011 18:20:26 +0000 (20:20 +0200)]
LA8: Eliminate magic numbers.

13 years agoLA8: Add trigger point support.
Uwe Hermann [Sun, 8 May 2011 18:09:22 +0000 (20:09 +0200)]
LA8: Add trigger point support.

Report trigger point/position via SR_DF_TRIGGER packet.

13 years agodemo: Use memset(), might be faster.
Uwe Hermann [Fri, 6 May 2011 18:38:48 +0000 (20:38 +0200)]
demo: Use memset(), might be faster.

13 years agodemo: Add all-low/all-high pattern support.
Uwe Hermann [Fri, 6 May 2011 18:34:12 +0000 (20:34 +0200)]
demo: Add all-low/all-high pattern support.

Also, improve error handling a bit.

13 years agodemo: s/genmode/pattern/.
Uwe Hermann [Thu, 5 May 2011 11:02:48 +0000 (13:02 +0200)]
demo: s/genmode/pattern/.