<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="
http://www.w3.org/2005/Atom">
<title>sbase, branch HEAD</title>
<subtitle>suckless unix tools
</subtitle>
<entry>
<id>6b802ab9fd967e2478a29a583521a13fb91aef57</id>
<published>2025-06-01T12:09:11Z</published>
<updated>2025-06-02T07:18:29Z</updated>
<title>tar: man page update, and more robust & descriptive errors</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/6b802ab9fd967e2478a29a583521a13fb91aef57.gph" />
<author>
<name>Xan Phung</name>
<email>
[email protected]</email>
</author>
<content>commit 6b802ab9fd967e2478a29a583521a13fb91aef57
parent 5aa63dbe055d7a655ea14626abdf051ff29e057a
Author: Xan Phung <
[email protected]>
Date: Sun, 1 Jun 2025 22:09:11 +1000
tar: man page update, and more robust & descriptive errors
1. Manual page has been updated to reflect previous change to tar.
2. Error messages are more detailed & secured against unterminated
header strings. Previously, sanitize() assumed numeric fields were
terminated by space or null, but did not check termination is
actually present.
3. Default mode of the blank header in archive() is now 0600. For
all file headers, this is immediately set to the file's mode. Only
L-headers keep the 0600 value (which are not user visible). GNU
tar uses 0644, but 0600 was chosen for symmetry with sbase
unarchive(), which also uses 0600 as the initial mode.
</content>
</entry>
<entry>
<id>5aa63dbe055d7a655ea14626abdf051ff29e057a</id>
<published>2025-05-04T06:19:02Z</published>
<updated>2025-05-06T06:59:25Z</updated>
<title>tar: bug fix and compatibility improvements</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/5aa63dbe055d7a655ea14626abdf051ff29e057a.gph" />
<author>
<name>Xan Phung</name>
<email>
[email protected]</email>
</author>
<content>commit 5aa63dbe055d7a655ea14626abdf051ff29e057a
parent cfe9424ba92c735613723ab18427d091f825de34
Author: Xan Phung <
[email protected]>
Date: Sun, 4 May 2025 16:19:02 +1000
tar: bug fix and compatibility improvements
1. A fix for a bug in the unarchive() function (causing metadata
loss when used on large tar files). This bug is due to existing
code continuing to check for h->type == HARDLINK and SOFTLINK
(near end of function), when the entire header block has already
been overwritten by a call to eread() prior to the h->type checks.
2. Long (>=256 byte) file name compatibility: 'L' style long file
names were extremely simple to add, requiring a (net) addition of
a handful lines of code, and this patch supports both extracting
and creating L-style tar archives. Pax 'x' style long names are
more complex to parse, and this patch only supports extracting pax
'x' tars, but not creating them.
3. Command line argument compatibility improvements: 'c', 'x', 't'
args are accepted without needing a hyphen in front. The '-p'
flag is also accepted but is no-op (as it is the normal behaviour
of sbase tar anyway, and allows sbase tar to be used in scripts
specifying this flag). Directory tree member extraction is also
supported by this patch.
4. Handle tar archives with "." (current directory) entries. Some
archives contain "." or "./" entries, causing error reports when
the current code tries to remove() the current dir. I have added a
check in unarchive() to not perform remove() on encountering these
entries.
</content>
</entry>
<entry>
<id>cfe9424ba92c735613723ab18427d091f825de34</id>
<published>2025-05-02T08:41:35Z</published>
<updated>2025-05-02T08:41:35Z</updated>
<title>rm: Fix regression from b278710</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/cfe9424ba92c735613723ab18427d091f825de34.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit cfe9424ba92c735613723ab18427d091f825de34
parent b27871013b1debede7a5177f915be3f7b75aaee3
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 2 May 2025 10:41:35 +0200
rm: Fix regression from b278710
The forbidden() function only checks if we are trying to remove one of
the . .. or / directories that are forbidden by POSIX, and it should
not fail when it cannot stat a target, because that check is done later
considering if -r, -f and -i were used or not. If the stat fails we can
be sure that is not / and thus it is not a forbidden target.
</content>
</entry>
<entry>
<id>b27871013b1debede7a5177f915be3f7b75aaee3</id>
<published>2025-04-25T10:37:10Z</published>
<updated>2025-04-25T15:16:36Z</updated>
<title>rm: Use basenames to protect against . and ..</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b27871013b1debede7a5177f915be3f7b75aaee3.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit b27871013b1debede7a5177f915be3f7b75aaee3
parent d4dfd42d3580ad36bedfdc5b8924ff6683981f53
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 25 Apr 2025 12:37:10 +0200
rm: Use basenames to protect against . and ..
POSIX mandates that the protection should care about the basename,
and we cannot use basename because it can modify the input string
and it would make harder later operations. Also, it would put a limit
in the length of the name of the paths and POSIX forbids limitations
about that regard in rm(1).
</content>
</entry>
<entry>
<id>d4dfd42d3580ad36bedfdc5b8924ff6683981f53</id>
<published>2025-04-23T15:56:45Z</published>
<updated>2025-04-24T21:20:13Z</updated>
<title>rm.1: swap .St mdoc macro with text</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/d4dfd42d3580ad36bedfdc5b8924ff6683981f53.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit d4dfd42d3580ad36bedfdc5b8924ff6683981f53
parent a0844fc8634a60ad61c0dc41719d7ad57f1b6c85
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 23 Apr 2025 17:56:45 +0200
rm.1: swap .St mdoc macro with text
</content>
</entry>
<entry>
<id>a0844fc8634a60ad61c0dc41719d7ad57f1b6c85</id>
<published>2025-04-23T15:56:45Z</published>
<updated>2025-04-24T21:16:42Z</updated>
<title>cp.1: swap .St mdoc macro with text</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/a0844fc8634a60ad61c0dc41719d7ad57f1b6c85.gph" />
<author>
<name>THIBAUT AUBIN</name>
<email>
[email protected]</email>
</author>
<content>commit a0844fc8634a60ad61c0dc41719d7ad57f1b6c85
parent 3f7c7c2497037ff29c84464059ea9a6442596354
Author: THIBAUT AUBIN <
[email protected]>
Date: Wed, 23 Apr 2025 17:56:45 +0200
cp.1: swap .St mdoc macro with text
</content>
</entry>
<entry>
<id>3f7c7c2497037ff29c84464059ea9a6442596354</id>
<published>2025-04-24T06:51:22Z</published>
<updated>2025-04-24T07:28:05Z</updated>
<title>rm: Don't attempt to remove . or ..</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/3f7c7c2497037ff29c84464059ea9a6442596354.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 3f7c7c2497037ff29c84464059ea9a6442596354
parent 0df8cdc12d7a5600ad0c2b9420a14be4e2af340b
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Thu, 24 Apr 2025 08:51:22 +0200
rm: Don't attempt to remove . or ..
POSIX explicitely mandates to ignore . or .. to avoid
pitfals like rm -r .* and no having files that begin
with a dot.
</content>
</entry>
<entry>
<id>0df8cdc12d7a5600ad0c2b9420a14be4e2af340b</id>
<published>2025-04-23T20:12:52Z</published>
<updated>2025-04-24T07:27:59Z</updated>
<title>rm: Add -i and cleanup rm()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/0df8cdc12d7a5600ad0c2b9420a14be4e2af340b.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 0df8cdc12d7a5600ad0c2b9420a14be4e2af340b
parent 948e5161902920705f0c3a6458533fc017452173
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 23 Apr 2025 22:12:52 +0200
rm: Add -i and cleanup rm()
POSIX mandates that if the input of rm is a tty and it does not have
write rights over a file/dir then it should ask for confirmation, in
the same way that is done with the -i flag. To accomodate both things
the code has been rearrenged a bit to have only one case instead of
having two. Also, this rework adds the error message when a directory
is removed without a -r flag.
</content>
</entry>
<entry>
<id>948e5161902920705f0c3a6458533fc017452173</id>
<published>2025-04-21T17:31:40Z</published>
<updated>2025-04-23T19:10:51Z</updated>
<title>libutil/unescape: Stop octal escape at 3 digits</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/948e5161902920705f0c3a6458533fc017452173.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit 948e5161902920705f0c3a6458533fc017452173
parent f3bf46b44b5cd14068c9d48ddd7ffb1c7e4b26ca
Author: Michael Forney <
[email protected]>
Date: Mon, 21 Apr 2025 10:31:40 -0700
libutil/unescape: Stop octal escape at 3 digits
unescape() is used by several tools, in particular printf(1) and
tr(1), which should stop the octal escape at a maximum of 3 digits:
printf(1)
> In addition to the escape sequences shown in XBD 5. File Format
> Notation ('\\', '\a', '\b', '\f', '\n', '\r', '\t', '\v'), "\ddd",
> where ddd is a one, two, or three-digit octal number, shall be
> written as a byte with the numeric value specified by the octal
> number.
tr(1)
> An octal sequence shall consist of a <backslash> followed by the
> longest sequence of one, two, or three-octal-digit characters.
Previously, the maximum was set to 4 (possibly a typo?), which meant
that printf '\0123' printed `S` instead of `<newline>3`.
To check that this doesn't break any other tools using unescape:
- cut: used for -d parameter, escapes are non-standard
- join: used for -t parameter, escapes are non-standard
- nl: used for -s parameter, escapes are non-standard
- paste: used for -d parameter, POSIX specifies \n, \t, \\, and \0,
\0 followed by a digit is unspecified
- sort: used for -t parameter, escapes are non-standard
</content>
</entry>
<entry>
<id>f3bf46b44b5cd14068c9d48ddd7ffb1c7e4b26ca</id>
<published>2025-04-22T16:15:24Z</published>
<updated>2025-04-22T16:18:31Z</updated>
<title>rm: Remove unneeded declarations</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/f3bf46b44b5cd14068c9d48ddd7ffb1c7e4b26ca.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit f3bf46b44b5cd14068c9d48ddd7ffb1c7e4b26ca
parent 11492947deec4e54e67da8cf1934767f02d146c1
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 22 Apr 2025 18:15:24 +0200
rm: Remove unneeded declarations
Rm uses flags from a data object passed to the recursion callback and
the old global variables are not defined anymore.
</content>
</entry>
<entry>
<id>11492947deec4e54e67da8cf1934767f02d146c1</id>
<published>2025-04-22T11:51:32Z</published>
<updated>2025-04-22T11:57:36Z</updated>
<title>cp: Don't modify status for -i</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/11492947deec4e54e67da8cf1934767f02d146c1.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 11492947deec4e54e67da8cf1934767f02d146c1
parent 9e8b431075c0901a58dda7eee3f18d97095896ca
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 22 Apr 2025 13:51:32 +0200
cp: Don't modify status for -i
Quoting POSIX:
The following exit values shall be returned: 0 All requested files (excluding files where a non-affirmative response was given to a request for confirmation) were successfully copied. >0 An error occurred.
</content>
</entry>
<entry>
<id>9e8b431075c0901a58dda7eee3f18d97095896ca</id>
<published>2025-04-10T00:00:00Z</published>
<updated>2025-04-20T07:20:11Z</updated>
<title>cp: add -i flag</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/9e8b431075c0901a58dda7eee3f18d97095896ca.gph" />
<author>
<name>Thibaut Aubin</name>
<email>
[email protected]</email>
</author>
<content>commit 9e8b431075c0901a58dda7eee3f18d97095896ca
parent 8d07e5e8f639f3fabb45379786c9225f7312e6e5
Author: Thibaut Aubin <
[email protected]>
Date: Thu, 10 Apr 2025 00:00:00 +0000
cp: add -i flag
</content>
</entry>
<entry>
<id>8d07e5e8f639f3fabb45379786c9225f7312e6e5</id>
<published>2025-04-10T00:00:00Z</published>
<updated>2025-04-20T07:20:02Z</updated>
<title>libutil: add confirm() prompt</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8d07e5e8f639f3fabb45379786c9225f7312e6e5.gph" />
<author>
<name>Thibaut Aubin</name>
<email>
[email protected]</email>
</author>
<content>commit 8d07e5e8f639f3fabb45379786c9225f7312e6e5
parent 8e18687849ad59c958becd5d9d4dbce462c34e57
Author: Thibaut Aubin <
[email protected]>
Date: Thu, 10 Apr 2025 00:00:00 +0000
libutil: add confirm() prompt
</content>
</entry>
<entry>
<id>8e18687849ad59c958becd5d9d4dbce462c34e57</id>
<published>2025-03-26T18:58:11Z</published>
<updated>2025-03-26T19:08:20Z</updated>
<title>find: Fix -exec return value</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8e18687849ad59c958becd5d9d4dbce462c34e57.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit 8e18687849ad59c958becd5d9d4dbce462c34e57
parent 3de61ef1aa27a4a6b8cb44d169c4d8774eb3845b
Author: Tavian Barnes <
[email protected]>
Date: Wed, 26 Mar 2025 19:58:11 +0100
find: Fix -exec return value
</content>
</entry>
<entry>
<id>3de61ef1aa27a4a6b8cb44d169c4d8774eb3845b</id>
<published>2024-12-19T20:56:20Z</published>
<updated>2025-03-21T07:44:35Z</updated>
<title>rev, tail: replace hardcoded code by UTF8_POINT macro</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/3de61ef1aa27a4a6b8cb44d169c4d8774eb3845b.gph" />
<author>
<name>Elie Le Vaillant</name>
<email>
[email protected]</email>
</author>
<content>commit 3de61ef1aa27a4a6b8cb44d169c4d8774eb3845b
parent 2a29857fe92157f6a31b965dc6d70fa3ab128bb4
Author: Elie Le Vaillant <
[email protected]>
Date: Thu, 19 Dec 2024 21:56:20 +0100
rev, tail: replace hardcoded code by UTF8_POINT macro
</content>
</entry>
<entry>
<id>2a29857fe92157f6a31b965dc6d70fa3ab128bb4</id>
<published>2025-03-11T07:47:22Z</published>
<updated>2025-03-20T08:55:29Z</updated>
<title>Add sbase-box to gitignore</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/2a29857fe92157f6a31b965dc6d70fa3ab128bb4.gph" />
<author>
<name>Sebastien Peterson-Boudreau</name>
<email>
[email protected]</email>
</author>
<content>commit 2a29857fe92157f6a31b965dc6d70fa3ab128bb4
parent e8fe04c543eab13e892beda05cb9bccb9e4f441e
Author: Sebastien Peterson-Boudreau <
[email protected]>
Date: Tue, 11 Mar 2025 08:47:22 +0100
Add sbase-box to gitignore
</content>
</entry>
<entry>
<id>e8fe04c543eab13e892beda05cb9bccb9e4f441e</id>
<published>2025-03-03T18:52:37Z</published>
<updated>2025-03-19T20:51:05Z</updated>
<title>du: Dedup hardlinks</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/e8fe04c543eab13e892beda05cb9bccb9e4f441e.gph" />
<author>
<name>remph</name>
<email>
[email protected]</email>
</author>
<content>commit e8fe04c543eab13e892beda05cb9bccb9e4f441e
parent 39a4c55378294437627421571a51b64bd5e09623
Author: remph <
[email protected]>
Date: Mon, 3 Mar 2025 19:52:37 +0100
du: Dedup hardlinks
Conform to POSIX, which says `Files with multiple links shall be counted
and written for only one entry,' in the 2008[1] and 2013[2] editions, and
uses more words to say the same thing in the 2017[3] and 2024[4] editions.
This patch also keeps inodes between operands and dedups symlinks if
applicable, which are implementation-defined in 2017 and required in 2024.
See also the `RATIONALE' section in the 2024 edition.
[1]
https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/utilities/du.html
[2]
https://pubs.opengroup.org/onlinepubs/9699919799.2013edition/utilities/du.html
[3]
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/du.html
[4]
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/du.html
</content>
</entry>
<entry>
<id>39a4c55378294437627421571a51b64bd5e09623</id>
<published>2025-02-26T10:03:58Z</published>
<updated>2025-03-19T20:47:01Z</updated>
<title>tar: archive: improve fix for long names crashing</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/39a4c55378294437627421571a51b64bd5e09623.gph" />
<author>
<name>Andrea Calligaris</name>
<email>
[email protected]</email>
</author>
<content>commit 39a4c55378294437627421571a51b64bd5e09623
parent 97629ab38692ee65250a882bb88eb31c71e51f00
Author: Andrea Calligaris <
[email protected]>
Date: Wed, 26 Feb 2025 11:03:58 +0100
tar: archive: improve fix for long names crashing
As requested, I resend my old patch for fixing the crashing while
archiving with names longer than 100 characters.
Last patch dealing with the issue was [1], and the old patch was [2]. The
code before this commit was not dealing correctly with multiple slashes,
but use of basename(3) and dirname(3) needed a temporary buffer because
otherwise we destroyed the path that was used later in several places.
This solution does not modifies the path and use pointer arithmetic to
solve the problem.
[1]
https://lists.suckless.org/hackers/2412/19213.html
[2]
https://lists.suckless.org/hackers/2402/19071.html
Co-authored-by: Roberto E. Vargas Caballer <
[email protected]>
</content>
</entry>
<entry>
<id>97629ab38692ee65250a882bb88eb31c71e51f00</id>
<published>2025-03-17T18:03:13Z</published>
<updated>2025-03-17T18:03:13Z</updated>
<title>build: Fix getconf generation</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/97629ab38692ee65250a882bb88eb31c71e51f00.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 97629ab38692ee65250a882bb88eb31c71e51f00
parent b1c6185a40f7a40381ab78b97f6715b09f84a9e4
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Mon, 17 Mar 2025 19:03:13 +0100
build: Fix getconf generation
The Makefile was relaying in two extensions:
1- Inference rule chaining: Based in getconf.c -> getconf.o -> getconf
2- Inference rule .o: POSIX defines the .c rule, but not the .o rule
(what makes sense because to be useful you need inference rule chaining).
</content>
</entry>
<entry>
<id>b1c6185a40f7a40381ab78b97f6715b09f84a9e4</id>
<published>2025-02-22T12:14:51Z</published>
<updated>2025-03-17T13:32:36Z</updated>
<title>find: Implement -print0</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b1c6185a40f7a40381ab78b97f6715b09f84a9e4.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit b1c6185a40f7a40381ab78b97f6715b09f84a9e4
parent 9d9afe00fb2afbc2b6bfd364f04f108adb917d43
Author: Tavian Barnes <
[email protected]>
Date: Sat, 22 Feb 2025 13:14:51 +0100
find: Implement -print0
</content>
</entry>
<entry>
<id>9d9afe00fb2afbc2b6bfd364f04f108adb917d43</id>
<published>2025-02-22T12:14:48Z</published>
<updated>2025-03-17T13:32:36Z</updated>
<title>libutil/mode: Fix sticky bit parsing</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/9d9afe00fb2afbc2b6bfd364f04f108adb917d43.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit 9d9afe00fb2afbc2b6bfd364f04f108adb917d43
parent 556797632991c4458682aa4cc7399a69ac7c77a8
Author: Tavian Barnes <
[email protected]>
Date: Sat, 22 Feb 2025 13:14:48 +0100
libutil/mode: Fix sticky bit parsing
</content>
</entry>
<entry>
<id>556797632991c4458682aa4cc7399a69ac7c77a8</id>
<published>2025-02-22T12:14:49Z</published>
<updated>2025-03-17T13:32:36Z</updated>
<title>find: Don't exit successfully after errors</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/556797632991c4458682aa4cc7399a69ac7c77a8.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit 556797632991c4458682aa4cc7399a69ac7c77a8
parent 8f9824e34bbf5a7c61a425ebfca93bff6364ecb9
Author: Tavian Barnes <
[email protected]>
Date: Sat, 22 Feb 2025 13:14:49 +0100
find: Don't exit successfully after errors
</content>
</entry>
<entry>
<id>8f9824e34bbf5a7c61a425ebfca93bff6364ecb9</id>
<published>2025-02-22T12:14:49Z</published>
<updated>2025-03-17T13:32:07Z</updated>
<title>find: Use the current umask to parse -perm</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8f9824e34bbf5a7c61a425ebfca93bff6364ecb9.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit 8f9824e34bbf5a7c61a425ebfca93bff6364ecb9
parent e861343db1d13e1e7497e81db56526fd5505704b
Author: Tavian Barnes <
[email protected]>
Date: Sat, 22 Feb 2025 13:14:49 +0100
find: Use the current umask to parse -perm
https://www.austingroupbugs.net/view.php?id=1392
</content>
</entry>
<entry>
<id>e861343db1d13e1e7497e81db56526fd5505704b</id>
<published>2025-02-22T12:14:47Z</published>
<updated>2025-03-17T13:30:38Z</updated>
<title>find: Fall back from stat() to lstat() on broken links</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/e861343db1d13e1e7497e81db56526fd5505704b.gph" />
<author>
<name>Tavian Barnes</name>
<email>
[email protected]</email>
</author>
<content>commit e861343db1d13e1e7497e81db56526fd5505704b
parent eb749d1c88c0557ed06733de89efda1e252facc2
Author: Tavian Barnes <
[email protected]>
Date: Sat, 22 Feb 2025 13:14:47 +0100
find: Fall back from stat() to lstat() on broken links
</content>
</entry>
<entry>
<id>eb749d1c88c0557ed06733de89efda1e252facc2</id>
<published>2025-03-13T10:46:33Z</published>
<updated>2025-03-13T11:10:14Z</updated>
<title>Bump version to 0.1</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/eb749d1c88c0557ed06733de89efda1e252facc2.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit eb749d1c88c0557ed06733de89efda1e252facc2
parent 9b71b697fed5f3abc69abb63a97e7bce3ded5fcd
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Thu, 13 Mar 2025 11:46:33 +0100
Bump version to 0.1
</content>
</entry>
<entry>
<id>9b71b697fed5f3abc69abb63a97e7bce3ded5fcd</id>
<published>2025-03-13T11:06:12Z</published>
<updated>2025-03-13T11:10:07Z</updated>
<title>build: Avoid using numbers in dist target directory</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/9b71b697fed5f3abc69abb63a97e7bce3ded5fcd.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 9b71b697fed5f3abc69abb63a97e7bce3ded5fcd
parent 279cec88898c2386430d701847739209fabf6208
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Thu, 13 Mar 2025 12:06:12 +0100
build: Avoid using numbers in dist target directory
We are using a wildcard to copy things into the directory used to
build the distribution tar file, and this directory can contain
the .1 extension used in the *.1 wildcard used to copy the man
pages. Also, changed the cp command line from -r to -R because
-r is not specified in POSIX.
</content>
</entry>
<entry>
<id>279cec88898c2386430d701847739209fabf6208</id>
<published>2024-12-09T13:36:07Z</published>
<updated>2024-12-17T10:46:32Z</updated>
<title>kill: handle TRAP signal</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/279cec88898c2386430d701847739209fabf6208.gph" />
<author>
<name>Randy Palamar</name>
<email>
[email protected]</email>
</author>
<content>commit 279cec88898c2386430d701847739209fabf6208
parent cafdc7c6561f546578e5d7c842149fa242937a42
Author: Randy Palamar <
[email protected]>
Date: Mon, 9 Dec 2024 06:36:07 -0700
kill: handle TRAP signal
TRAP is a useful signal which when sent to a process currently
attached to a debugger causes the debugger to immediately break.
This is very helpful for programs running in some sort of run loop
where it may be difficult to set up a break point in an
appropriate location without modifying the source to include a
predicate condition.
</content>
</entry>
<entry>
<id>cafdc7c6561f546578e5d7c842149fa242937a42</id>
<published>2024-12-06T09:37:41Z</published>
<updated>2024-12-17T10:27:35Z</updated>
<title>tar: force decompression</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/cafdc7c6561f546578e5d7c842149fa242937a42.gph" />
<author>
<name>Elie Le Vaillant</name>
<email>
[email protected]</email>
</author>
<content>commit cafdc7c6561f546578e5d7c842149fa242937a42
parent 782afdf8c6202298a35f37bbe6eaedc5f63a7776
Author: Elie Le Vaillant <
[email protected]>
Date: Fri, 6 Dec 2024 10:37:41 +0100
tar: force decompression
decomp() needs the force flag -f too.
</content>
</entry>
<entry>
<id>782afdf8c6202298a35f37bbe6eaedc5f63a7776</id>
<published>2024-12-06T09:37:37Z</published>
<updated>2024-12-17T10:25:12Z</updated>
<title>sed.1: add some missing info</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/782afdf8c6202298a35f37bbe6eaedc5f63a7776.gph" />
<author>
<name>Andrea Calligaris</name>
<email>
[email protected]</email>
</author>
<content>commit 782afdf8c6202298a35f37bbe6eaedc5f63a7776
parent 20c27b1ad0f2fae65ede721c43f8cb66186d3049
Author: Andrea Calligaris <
[email protected]>
Date: Fri, 6 Dec 2024 10:37:37 +0100
sed.1: add some missing info
There are some features that are coded already, might as well document them.
</content>
</entry>
<entry>
<id>20c27b1ad0f2fae65ede721c43f8cb66186d3049</id>
<published>2024-12-06T09:37:20Z</published>
<updated>2024-12-17T10:18:06Z</updated>
<title>tar: fix problem with paths longer than 100 characters</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/20c27b1ad0f2fae65ede721c43f8cb66186d3049.gph" />
<author>
<name>TahaGTRC</name>
<email>
[email protected]</email>
</author>
<content>commit 20c27b1ad0f2fae65ede721c43f8cb66186d3049
parent cf1e0643396391213056ebae2f5c25611fc20ea4
Author: TahaGTRC <
[email protected]>
Date: Fri, 6 Dec 2024 10:37:20 +0100
tar: fix problem with paths longer than 100 characters
</content>
</entry>
<entry>
<id>cf1e0643396391213056ebae2f5c25611fc20ea4</id>
<published>2024-09-13T05:20:31Z</published>
<updated>2024-10-07T09:14:36Z</updated>
<title>README: Add usage instruction for sbase-box</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/cf1e0643396391213056ebae2f5c25611fc20ea4.gph" />
<author>
<name>Brandon Pribula</name>
<email>
[email protected]</email>
</author>
<content>commit cf1e0643396391213056ebae2f5c25611fc20ea4
parent d458fa2c7b9a1c874ade615766349385fae1c5b6
Author: Brandon Pribula <
[email protected]>
Date: Fri, 13 Sep 2024 05:20:31 +0000
README: Add usage instruction for sbase-box
It would be a good idea to add a usage instruction for sbase-box
in sbase's README similar to the one in ubase's README.
Also, There's no command named 'sha238sum' but there is one named
'sha384sum' and in the alphabetized list of commands 'paste' should
come before 'pathchk'.
</content>
</entry>
<entry>
<id>d458fa2c7b9a1c874ade615766349385fae1c5b6</id>
<published>2024-09-07T22:57:31Z</published>
<updated>2024-09-08T06:35:39Z</updated>
<title>fix: update man pages to standard mdoc date format</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/d458fa2c7b9a1c874ade615766349385fae1c5b6.gph" />
<author>
<name>Brandon Pribula</name>
<email>
[email protected]</email>
</author>
<content>commit d458fa2c7b9a1c874ade615766349385fae1c5b6
parent b30fb56804bfed69b45ef0e944d2e029e4d26258
Author: Brandon Pribula <
[email protected]>
Date: Sat, 7 Sep 2024 22:57:31 +0000
fix: update man pages to standard mdoc date format
When viewing sbase's man pages the date displayed at the bottom is
the current date rather than the date entered in the <program>.1
file.
According to this:
https://mandoc.bsd.lv/mdoc/details/date.html
The traditional man date format used by sbase (.Dd year-month-day)
is no longer recommended and no longer supported by GNU troff or
Heirloom Docs and as a result the current date is displayed instead.
Although this format is still accepted by mandoc for backward
compatibility.
For portability it states the standard mdoc date format should be
used instead: .Dd month day, year
I applied the following patch to sbase's last commit b30fb56 and
it fixes the issue.
</content>
</entry>
<entry>
<id>b30fb56804bfed69b45ef0e944d2e029e4d26258</id>
<published>2024-03-22T03:39:25Z</published>
<updated>2024-03-22T03:39:25Z</updated>
<title>ed: Add other pending bug</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b30fb56804bfed69b45ef0e944d2e029e4d26258.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit b30fb56804bfed69b45ef0e944d2e029e4d26258
parent ac6d382515327bf0bf14d5d355d33ceffddc7fd7
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Mar 2024 04:39:25 +0100
ed: Add other pending bug
At this stage is clear that the match() function of ed has
serious problems that have to be solved.
</content>
</entry>
<entry>
<id>ac6d382515327bf0bf14d5d355d33ceffddc7fd7</id>
<published>2024-03-12T16:11:35Z</published>
<updated>2024-03-12T16:11:35Z</updated>
<title>build: Fix sbase-box-install target</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/ac6d382515327bf0bf14d5d355d33ceffddc7fd7.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit ac6d382515327bf0bf14d5d355d33ceffddc7fd7
parent 13898fa7a91155a60c4c0bd61d4b7693a2ff3f09
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 12 Mar 2024 17:11:35 +0100
build: Fix sbase-box-install target
The target tried to execute a non valid shell script
and there was a possibility to fatorize the creation
of the proto file instead of repeating it in all
the actions that required.
</content>
</entry>
<entry>
<id>13898fa7a91155a60c4c0bd61d4b7693a2ff3f09</id>
<published>2024-03-05T20:20:57Z</published>
<updated>2024-03-06T15:00:10Z</updated>
<title>tar: chktar: fix conditional typo</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/13898fa7a91155a60c4c0bd61d4b7693a2ff3f09.gph" />
<author>
<name>Elie Le Vaillant</name>
<email>
[email protected]</email>
</author>
<content>commit 13898fa7a91155a60c4c0bd61d4b7693a2ff3f09
parent bca3fcca91cfb6ee64434776aa20209547816c17
Author: Elie Le Vaillant <
[email protected]>
Date: Tue, 5 Mar 2024 21:20:57 +0100
tar: chktar: fix conditional typo
</content>
</entry>
<entry>
<id>bca3fcca91cfb6ee64434776aa20209547816c17</id>
<published>2024-02-11T08:26:14Z</published>
<updated>2024-03-05T12:25:44Z</updated>
<title>tar: sanitize, chktar: leading spaces should be skipped over</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/bca3fcca91cfb6ee64434776aa20209547816c17.gph" />
<author>
<name>Elie Le Vaillant</name>
<email>
[email protected]</email>
</author>
<content>commit bca3fcca91cfb6ee64434776aa20209547816c17
parent d335c366f7a2ef74ab8da19b721707110ec821c8
Author: Elie Le Vaillant <
[email protected]>
Date: Sun, 11 Feb 2024 09:26:14 +0100
tar: sanitize, chktar: leading spaces should be skipped over
Some tar archives (eg.
ftp://ftp.gnu.org/gnu/shtool/shtool-2.0.8.tar.gz)
use leading spaces instead of leading zeroes for numeric fields.
Although it is not allowed by the ustar specification, most tar
implementations recognize it as correct. But since 3ef6d4e4, we
replace all spaces by NULs here, not just trailing ones, which leads to
recognizing such archives as malformed. This fixes it: we now skip
over leading spaces, allowing strtol(3) to read those numeric fields.
</content>
</entry>
<entry>
<id>d335c366f7a2ef74ab8da19b721707110ec821c8</id>
<published>2024-01-22T21:18:10Z</published>
<updated>2024-01-31T04:00:51Z</updated>
<title>expr: tonum: handle case where result was previously calculated</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/d335c366f7a2ef74ab8da19b721707110ec821c8.gph" />
<author>
<name>Randy Palamar</name>
<email>
[email protected]</email>
</author>
<content>commit d335c366f7a2ef74ab8da19b721707110ec821c8
parent 6b9da17eb42e671946bf9326476a20f1b9497bdc
Author: Randy Palamar <
[email protected]>
Date: Mon, 22 Jan 2024 14:18:10 -0700
expr: tonum: handle case where result was previously calculated
As pointed out in a mail to dev expr was segfaulting when multiple
math operations were specified on the command line: eg. 'expr 3 \*
2 + 1'. This happens because the tonum(), introduced in e50d533,
assumed that v->str was always non null. parse() guarantees this
for user input but this is not the case when doop() is called with
the result of a previous calculation. However in that case we know
that v->num is already valid so we can simply return.
</content>
</entry>
<entry>
<id>6b9da17eb42e671946bf9326476a20f1b9497bdc</id>
<published>2024-01-19T20:56:40Z</published>
<updated>2024-01-19T21:01:25Z</updated>
<title>build: Fix OBJ definition and remove MAN</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/6b9da17eb42e671946bf9326476a20f1b9497bdc.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 6b9da17eb42e671946bf9326476a20f1b9497bdc
parent 270ca025ce236885e3177cd7acfd2cfbdf6e36a5
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 19 Jan 2024 21:56:40 +0100
build: Fix OBJ definition and remove MAN
The MAN macro was not used, and it and OBJ had the same problem
because they were defined using an empty string in the replace
pattern of the macro expansion, but as it is said by POSIX:
The subst1 to be replaced shall be recognized when it is a suffix
at the end of a word in string1
so, an empty string should not be used.
Also, a new inference rule is added to generate the binary
directly from the .c without generating the intermediate
object, removing the need of chaining different inference
rules which is not guaranteed to work in all the make
implementations.
</content>
</entry>
<entry>
<id>270ca025ce236885e3177cd7acfd2cfbdf6e36a5</id>
<published>2024-01-07T18:02:18Z</published>
<updated>2024-01-16T08:11:46Z</updated>
<title>expr: don't evaluate matched substr as a number</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/270ca025ce236885e3177cd7acfd2cfbdf6e36a5.gph" />
<author>
<name>Randy Palamar</name>
<email>
[email protected]</email>
</author>
<content>commit 270ca025ce236885e3177cd7acfd2cfbdf6e36a5
parent e50d533d598dbe284e225e2ee52ed5f76a6e6f6a
Author: Randy Palamar <
[email protected]>
Date: Sun, 7 Jan 2024 11:02:18 -0700
expr: don't evaluate matched substr as a number
POSIX specifies that if the pattern contains a subexpression then
the first matched subexpression should be returned if it exists.
This fixes things like the following:
/expr 00003 : '\(.*\)'
Before: 3
After: 00003
</content>
</entry>
<entry>
<id>e50d533d598dbe284e225e2ee52ed5f76a6e6f6a</id>
<published>2024-01-07T18:02:17Z</published>
<updated>2024-01-16T08:11:40Z</updated>
<title>expr: treat expressions as strs until evaluation</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/e50d533d598dbe284e225e2ee52ed5f76a6e6f6a.gph" />
<author>
<name>Randy Palamar</name>
<email>
[email protected]</email>
</author>
<content>commit e50d533d598dbe284e225e2ee52ed5f76a6e6f6a
parent 7d5b113423ae72b2edbd8433871ad8a819bfadca
Author: Randy Palamar <
[email protected]>
Date: Sun, 7 Jan 2024 11:02:17 -0700
expr: treat expressions as strs until evaluation
Comparison operations (>, <, =, etc.) and matching operations must
operate originally provided string not one that has gone back and
forth through string formatting. This caused operations such as
the following to give incorrect results:
/expr 00003 : '.*'
Before: 1
After: 5
This commit fixes that issue.
</content>
</entry>
<entry>
<id>7d5b113423ae72b2edbd8433871ad8a819bfadca</id>
<published>2024-01-12T19:48:42Z</published>
<updated>2024-01-12T19:48:42Z</updated>
<title>ed: Add new TODO</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/7d5b113423ae72b2edbd8433871ad8a819bfadca.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 7d5b113423ae72b2edbd8433871ad8a819bfadca
parent 2732217a407c03900145e6f4191936ff6a33945a
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 12 Jan 2024 20:48:42 +0100
ed: Add new TODO
</content>
</entry>
<entry>
<id>2732217a407c03900145e6f4191936ff6a33945a</id>
<published>2023-12-29T19:27:23Z</published>
<updated>2023-12-29T19:27:23Z</updated>
<title>ed: Handle correctly lines in substitutions</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/2732217a407c03900145e6f4191936ff6a33945a.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 2732217a407c03900145e6f4191936ff6a33945a
parent e24228e0626e9f8ee89272f0f42d9ff9be078346
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 29 Dec 2023 20:27:23 +0100
ed: Handle correctly lines in substitutions
The s command can apply a replace pattern with embedded newlines
which modifies the line/index assignament. Using a range in the
address fail because afther the call to subline() the next line
has to be searched based in the index because the replace could
insert newlines.
</content>
</entry>
<entry>
<id>e24228e0626e9f8ee89272f0f42d9ff9be078346</id>
<published>2023-12-01T12:33:36Z</published>
<updated>2023-12-28T19:16:54Z</updated>
<title>sbase-box: Fix segmentation fault when exe without args</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/e24228e0626e9f8ee89272f0f42d9ff9be078346.gph" />
<author>
<name>Jules Maselbas</name>
<email>
[email protected]</email>
</author>
<content>commit e24228e0626e9f8ee89272f0f42d9ff9be078346
parent 6a557314b97a256f21a9964a6fb47f7b08427455
Author: Jules Maselbas <
[email protected]>
Date: Fri, 1 Dec 2023 13:33:36 +0100
sbase-box: Fix segmentation fault when exe without args
when sbase-box is executed without argument, the check sbase-box
options doesn't verify the argument count leading to a segfault.
Add a check on the argc before parsing sbase-box options (currently
only `-i`)
</content>
</entry>
<entry>
<id>6a557314b97a256f21a9964a6fb47f7b08427455</id>
<published>2023-12-28T16:26:50Z</published>
<updated>2023-12-28T16:26:50Z</updated>
<title>ed: Don't undo commands in sigint</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/6a557314b97a256f21a9964a6fb47f7b08427455.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 6a557314b97a256f21a9964a6fb47f7b08427455
parent bbdd7bedc464fb2a4c39c6afe40e79c4e5071e15
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Thu, 28 Dec 2023 17:26:50 +0100
ed: Don't undo commands in sigint
If newcmd is 0 then error() undo all the modifications
that happened since the last command, but this is not
what POSIX mandates:
SIGINT The ed utility shall interrupt its current activity, write the
string "?\n" to standard output, and return to command mode
(see the EXTENDED DESCRIPTION section).
</content>
</entry>
<entry>
<id>bbdd7bedc464fb2a4c39c6afe40e79c4e5071e15</id>
<published>2023-12-06T10:48:18Z</published>
<updated>2023-12-28T16:19:47Z</updated>
<title>ed: Simplify sighup dealing</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/bbdd7bedc464fb2a4c39c6afe40e79c4e5071e15.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit bbdd7bedc464fb2a4c39c6afe40e79c4e5071e15
parent 137f0917e48c5572ad7de889944af6b10f3c1035
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 6 Dec 2023 11:48:18 +0100
ed: Simplify sighup dealing
As we already have the dump() function we can move the
modification check inside the new dump() function.
</content>
</entry>
<entry>
<id>137f0917e48c5572ad7de889944af6b10f3c1035</id>
<published>2023-12-06T00:20:06Z</published>
<updated>2023-12-28T16:19:17Z</updated>
<title>ed: Print only last line in empty command</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/137f0917e48c5572ad7de889944af6b10f3c1035.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 137f0917e48c5572ad7de889944af6b10f3c1035
parent 2d4d7dc6d46ed7d227d49110196846d72f095d4b
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 6 Dec 2023 01:20:06 +0100
ed: Print only last line in empty command
</content>
</entry>
<entry>
<id>2d4d7dc6d46ed7d227d49110196846d72f095d4b</id>
<published>2023-12-05T23:38:49Z</published>
<updated>2023-12-28T16:16:34Z</updated>
<title>ed: Fix G and V commands</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/2d4d7dc6d46ed7d227d49110196846d72f095d4b.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 2d4d7dc6d46ed7d227d49110196846d72f095d4b
parent 516e7fec92c5e0b8ec031abeda62903b0d255c37
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 6 Dec 2023 00:38:49 +0100
ed: Fix G and V commands
</content>
</entry>
<entry>
<id>516e7fec92c5e0b8ec031abeda62903b0d255c37</id>
<published>2023-11-27T07:32:24Z</published>
<updated>2023-12-28T16:16:24Z</updated>
<title>ed: Remove nothing comments</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/516e7fec92c5e0b8ec031abeda62903b0d255c37.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 516e7fec92c5e0b8ec031abeda62903b0d255c37
parent 54a0fc3ecc34511bcba021bfedac10d965a3efe7
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Mon, 27 Nov 2023 08:32:24 +0100
ed: Remove nothing comments
Several bugs happened in the past due to this kind of comments
and it is better to get rid of them.
</content>
</entry>
<entry>
<id>54a0fc3ecc34511bcba021bfedac10d965a3efe7</id>
<published>2023-11-27T07:32:24Z</published>
<updated>2023-12-28T16:14:04Z</updated>
<title>ed: Fix makeline</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/54a0fc3ecc34511bcba021bfedac10d965a3efe7.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 54a0fc3ecc34511bcba021bfedac10d965a3efe7
parent 09dc00f9951a5e8b07eb79f0cf6e090d6ef9532d
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Mon, 27 Nov 2023 08:32:24 +0100
ed: Fix makeline
Strings without newlines created problems in the function
and the global field was not updated, making that new lines
added were marked as global being processed in the current
global command.
</content>
</entry>
<entry>
<id>09dc00f9951a5e8b07eb79f0cf6e090d6ef9532d</id>
<published>2023-11-29T20:49:05Z</published>
<updated>2023-12-28T16:04:13Z</updated>
<title>ed: Update TODO</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/09dc00f9951a5e8b07eb79f0cf6e090d6ef9532d.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 09dc00f9951a5e8b07eb79f0cf6e090d6ef9532d
parent 890f6c2c050149e63efe5b385b104c8383342973
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 29 Nov 2023 21:49:05 +0100
ed: Update TODO
Remove the cases are tested to work correctly now.
</content>
</entry>
<entry>
<id>890f6c2c050149e63efe5b385b104c8383342973</id>
<published>2023-11-27T08:21:45Z</published>
<updated>2023-12-28T16:02:44Z</updated>
<title>ed: Improve execsh</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/890f6c2c050149e63efe5b385b104c8383342973.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 890f6c2c050149e63efe5b385b104c8383342973
parent aacfa18b79f459b8419f424079d50fc5bc263791
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Mon, 27 Nov 2023 09:21:45 +0100
ed: Improve execsh
</content>
</entry>
<entry>
<id>aacfa18b79f459b8419f424079d50fc5bc263791</id>
<published>2023-11-29T14:47:51Z</published>
<updated>2023-12-28T16:02:19Z</updated>
<title>ed: Avoid dangling pointer in getrhs()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/aacfa18b79f459b8419f424079d50fc5bc263791.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit aacfa18b79f459b8419f424079d50fc5bc263791
parent b089261c3a7bdc6fb1efd84b7f097667d9f1fced
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 29 Nov 2023 15:47:51 +0100
ed: Avoid dangling pointer in getrhs()
If the string r.str is freed but error() is called then
next call will see a pointer that maybe it will try to free
because the call to error unwind the frame stack.
</content>
</entry>
<entry>
<id>b089261c3a7bdc6fb1efd84b7f097667d9f1fced</id>
<published>2023-11-27T08:21:13Z</published>
<updated>2023-12-28T16:01:58Z</updated>
<title>ed: Read from input in append()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b089261c3a7bdc6fb1efd84b7f097667d9f1fced.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit b089261c3a7bdc6fb1efd84b7f097667d9f1fced
parent 1e10bf6069f472637450f3f1f1933b73dff88a83
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Mon, 27 Nov 2023 09:21:13 +0100
ed: Read from input in append()
This enables using a and i commands in a global command
because the input is not anymore taken from stdin.
</content>
</entry>
<entry>
<id>1e10bf6069f472637450f3f1f1933b73dff88a83</id>
<published>2023-11-29T12:25:07Z</published>
<updated>2023-12-28T15:49:34Z</updated>
<title>ed: Add getinput() and setinput()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/1e10bf6069f472637450f3f1f1933b73dff88a83.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 1e10bf6069f472637450f3f1f1933b73dff88a83
parent b710ee81fcdb077d6ff088aa5beab021f58dc3d9
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 29 Nov 2023 13:25:07 +0100
ed: Add getinput() and setinput()
These functions allow to read from stdin the full next
line or seting as input a character array. These functions
avoid all the complexity about repeat commands that is very
fragile and depends on having multiple global variables with
weak relation between them.
</content>
</entry>
<entry>
<id>b710ee81fcdb077d6ff088aa5beab021f58dc3d9</id>
<published>2023-11-29T07:39:32Z</published>
<updated>2023-12-28T13:01:30Z</updated>
<title>ed: Add copystring()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b710ee81fcdb077d6ff088aa5beab021f58dc3d9.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit b710ee81fcdb077d6ff088aa5beab021f58dc3d9
parent 4cf7643094e76bab00c5ba370effca3e72f2c7ba
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 29 Nov 2023 08:39:32 +0100
ed: Add copystring()
This makes possible to use the function to initialize the string from
an existing char array.
</content>
</entry>
<entry>
<id>4cf7643094e76bab00c5ba370effca3e72f2c7ba</id>
<published>2023-10-29T11:46:47Z</published>
<updated>2023-11-14T18:36:18Z</updated>
<title>find: Make parameter error messages more specific</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/4cf7643094e76bab00c5ba370effca3e72f2c7ba.gph" />
<author>
<name>Quentin Rameau</name>
<email>
[email protected]</email>
</author>
<content>commit 4cf7643094e76bab00c5ba370effca3e72f2c7ba
parent 870b26af8eb58e98b8564561ebec8500165c593f
Author: Quentin Rameau <
[email protected]>
Date: Sun, 29 Oct 2023 12:46:47 +0100
find: Make parameter error messages more specific
Differenciate option operands from path operands
when an error is detected on the command line parameters.
</content>
</entry>
<entry>
<id>870b26af8eb58e98b8564561ebec8500165c593f</id>
<published>2023-10-29T11:28:37Z</published>
<updated>2023-11-14T18:35:23Z</updated>
<title>scripts: Fix non-portable find -perm /mode</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/870b26af8eb58e98b8564561ebec8500165c593f.gph" />
<author>
<name>Quentin Rameau</name>
<email>
[email protected]</email>
</author>
<content>commit 870b26af8eb58e98b8564561ebec8500165c593f
parent f496998f4f621bc2b96f972176d32efc2dd259f7
Author: Quentin Rameau <
[email protected]>
Date: Sun, 29 Oct 2023 12:28:37 +0100
scripts: Fix non-portable find -perm /mode
</content>
</entry>
<entry>
<id>f496998f4f621bc2b96f972176d32efc2dd259f7</id>
<published>2023-10-29T11:28:36Z</published>
<updated>2023-11-14T18:35:03Z</updated>
<title>scripts: Fix non-portable usage of find -maxdepth</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/f496998f4f621bc2b96f972176d32efc2dd259f7.gph" />
<author>
<name>Quentin Rameau</name>
<email>
[email protected]</email>
</author>
<content>commit f496998f4f621bc2b96f972176d32efc2dd259f7
parent 6fc6bbbf7141533ef8506ae8085eef594b2345fe
Author: Quentin Rameau <
[email protected]>
Date: Sun, 29 Oct 2023 12:28:36 +0100
scripts: Fix non-portable usage of find -maxdepth
</content>
</entry>
<entry>
<id>6fc6bbbf7141533ef8506ae8085eef594b2345fe</id>
<published>2023-10-29T10:32:50Z</published>
<updated>2023-11-14T18:34:27Z</updated>
<title>scripts: Force file copying on install</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/6fc6bbbf7141533ef8506ae8085eef594b2345fe.gph" />
<author>
<name>Quentin Rameau</name>
<email>
[email protected]</email>
</author>
<content>commit 6fc6bbbf7141533ef8506ae8085eef594b2345fe
parent c31af02d2231704f54ec2286ad1a71dc9fe3bdff
Author: Quentin Rameau <
[email protected]>
Date: Sun, 29 Oct 2023 11:32:50 +0100
scripts: Force file copying on install
This would otherwise cause an issue using cp to copy cp to itself.
</content>
</entry>
<entry>
<id>c31af02d2231704f54ec2286ad1a71dc9fe3bdff</id>
<published>2023-10-29T08:57:15Z</published>
<updated>2023-11-14T18:34:08Z</updated>
<title>make: fix rogue parameter in install target</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/c31af02d2231704f54ec2286ad1a71dc9fe3bdff.gph" />
<author>
<name>Quentin Rameau</name>
<email>
[email protected]</email>
</author>
<content>commit c31af02d2231704f54ec2286ad1a71dc9fe3bdff
parent 0a82a7d91a039b41f861e399a74da8f7073ed59f
Author: Quentin Rameau <
[email protected]>
Date: Sun, 29 Oct 2023 09:57:15 +0100
make: fix rogue parameter in install target
</content>
</entry>
<entry>
<id>0a82a7d91a039b41f861e399a74da8f7073ed59f</id>
<published>2023-10-29T16:48:13Z</published>
<updated>2023-10-29T16:48:13Z</updated>
<title>TODO: add replacement bug reported for ed</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/0a82a7d91a039b41f861e399a74da8f7073ed59f.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>
[email protected]</email>
</author>
<content>commit 0a82a7d91a039b41f861e399a74da8f7073ed59f
parent 090490b81d01f4e1da005560669fbb1239c88989
Author: Hiltjo Posthuma <
[email protected]>
Date: Sun, 29 Oct 2023 17:48:13 +0100
TODO: add replacement bug reported for ed
Also reported on IRC:
"escaping the delimiter in replacement fails also: s/./\//"
</content>
</entry>
<entry>
<id>090490b81d01f4e1da005560669fbb1239c88989</id>
<published>2023-09-27T07:46:39Z</published>
<updated>2023-09-27T07:46:39Z</updated>
<title>build: Posixfy the Makefile</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/090490b81d01f4e1da005560669fbb1239c88989.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 090490b81d01f4e1da005560669fbb1239c88989
parent ddde8021b371c7e519e8dfbca5c1f403af7099dd
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 27 Sep 2023 09:46:39 +0200
build: Posixfy the Makefile
</content>
</entry>
<entry>
<id>ddde8021b371c7e519e8dfbca5c1f403af7099dd</id>
<published>2023-09-26T21:09:34Z</published>
<updated>2023-09-27T05:59:27Z</updated>
<title>Simplify install/uninstall</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/ddde8021b371c7e519e8dfbca5c1f403af7099dd.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit ddde8021b371c7e519e8dfbca5c1f403af7099dd
parent 6285c22a07893303bc8719afefe3e878ed6bc887
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 23:09:34 +0200
Simplify install/uninstall
</content>
</entry>
<entry>
<id>6285c22a07893303bc8719afefe3e878ed6bc887</id>
<published>2023-09-26T18:51:30Z</published>
<updated>2023-09-27T05:59:27Z</updated>
<title>build: Remove unneeded dependency</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/6285c22a07893303bc8719afefe3e878ed6bc887.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 6285c22a07893303bc8719afefe3e878ed6bc887
parent 986bbb9253526d29e056ca57ce1ed87fbf65f920
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 20:51:30 +0200
build: Remove unneeded dependency
Make will search in the catalogue of rules for a way to
update the target, and in case of finding the dependency
it will apply the rule without a need of specifying that
dependency.
</content>
</entry>
<entry>
<id>986bbb9253526d29e056ca57ce1ed87fbf65f920</id>
<published>2023-09-26T18:27:08Z</published>
<updated>2023-09-27T05:59:27Z</updated>
<title>sbase-box: Add -i flag</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/986bbb9253526d29e056ca57ce1ed87fbf65f920.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 986bbb9253526d29e056ca57ce1ed87fbf65f920
parent 58ec1f628525b538cf52bf8f1bda1068dd0929f2
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 20:27:08 +0200
sbase-box: Add -i flag
</content>
</entry>
<entry>
<id>58ec1f628525b538cf52bf8f1bda1068dd0929f2</id>
<published>2023-09-26T18:03:53Z</published>
<updated>2023-09-27T05:59:27Z</updated>
<title>build: Move getconf.sh to scripts</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/58ec1f628525b538cf52bf8f1bda1068dd0929f2.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 58ec1f628525b538cf52bf8f1bda1068dd0929f2
parent ba2fc773f34789327c709ad865547e86eb3817d3
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 20:03:53 +0200
build: Move getconf.sh to scripts
The scripts directory is meant to contain all the scripts needed
in the build.
</content>
</entry>
<entry>
<id>ba2fc773f34789327c709ad865547e86eb3817d3</id>
<published>2023-09-26T17:45:46Z</published>
<updated>2023-09-27T05:59:27Z</updated>
<title>build: Simplify dist target</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/ba2fc773f34789327c709ad865547e86eb3817d3.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit ba2fc773f34789327c709ad865547e86eb3817d3
parent 893398754441b5f9d3435b99c3317acac4766e24
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 19:45:46 +0200
build: Simplify dist target
We can get rid of the SRC variable if we use shell wildcards.
</content>
</entry>
<entry>
<id>893398754441b5f9d3435b99c3317acac4766e24</id>
<published>2023-09-27T05:24:14Z</published>
<updated>2023-09-27T05:59:02Z</updated>
<title>build: Use ARFLAGS when creating libraries</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/893398754441b5f9d3435b99c3317acac4766e24.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 893398754441b5f9d3435b99c3317acac4766e24
parent bb4a01e837195713d6ce2f4e66826cfc7bfa3713
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 27 Sep 2023 07:24:14 +0200
build: Use ARFLAGS when creating libraries
ARFLAGS has the expected value for the toolchain used.
</content>
</entry>
<entry>
<id>bb4a01e837195713d6ce2f4e66826cfc7bfa3713</id>
<published>2023-09-27T04:47:37Z</published>
<updated>2023-09-27T05:58:59Z</updated>
<title>build: Remove LIBUTIL and LIBUTF</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/bb4a01e837195713d6ce2f4e66826cfc7bfa3713.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit bb4a01e837195713d6ce2f4e66826cfc7bfa3713
parent 0f542cab58a9742675ae5442de3a38af8780d21a
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 27 Sep 2023 06:47:37 +0200
build: Remove LIBUTIL and LIBUTF
They were just hidding the actual names of te libraries and as
they were added to OBJ they were listed twice in the clean
command.
</content>
</entry>
<entry>
<id>0f542cab58a9742675ae5442de3a38af8780d21a</id>
<published>2023-09-26T17:36:55Z</published>
<updated>2023-09-27T05:10:10Z</updated>
<title>build: Remove LIBUTFSRC and LIBUTILSRC</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/0f542cab58a9742675ae5442de3a38af8780d21a.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 0f542cab58a9742675ae5442de3a38af8780d21a
parent 3c36fb417738b5830f9f22b0ac88a266dd6eed5b
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 19:36:55 +0200
build: Remove LIBUTFSRC and LIBUTILSRC
These variables were used only to generate the variables
LIBUTFOBJ and LIBUTILOBJ.
</content>
</entry>
<entry>
<id>3c36fb417738b5830f9f22b0ac88a266dd6eed5b</id>
<published>2023-09-26T17:26:47Z</published>
<updated>2023-09-27T05:10:05Z</updated>
<title>sbase-box: Simplify Makefile rule</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/3c36fb417738b5830f9f22b0ac88a266dd6eed5b.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 3c36fb417738b5830f9f22b0ac88a266dd6eed5b
parent 8ca12835a58ead392822bfd52241e68eba7cd99f
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Tue, 26 Sep 2023 19:26:47 +0200
sbase-box: Simplify Makefile rule
The Makefile rule was too complex and these cases is better to just
move it to a script where will be eassier to use sed properly
and not looping over all the files 4 times.
</content>
</entry>
<entry>
<id>8ca12835a58ead392822bfd52241e68eba7cd99f</id>
<published>2023-09-27T04:35:21Z</published>
<updated>2023-09-27T04:37:38Z</updated>
<title>build: Remove .gitignore rule</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8ca12835a58ead392822bfd52241e68eba7cd99f.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 8ca12835a58ead392822bfd52241e68eba7cd99f
parent d3780956a991d64056a4bade210fffca53c531a3
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Wed, 27 Sep 2023 06:35:21 +0200
build: Remove .gitignore rule
It is not needed because it is just easier to maintain
the gitignore file.
</content>
</entry>
<entry>
<id>d3780956a991d64056a4bade210fffca53c531a3</id>
<published>2023-09-22T21:10:30Z</published>
<updated>2023-09-26T09:33:45Z</updated>
<title>ed: Deal signals in a reliable way</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/d3780956a991d64056a4bade210fffca53c531a3.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit d3780956a991d64056a4bade210fffca53c531a3
parent 95b96039755e86cf263bae342ed719e751bf0c1b
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 23:10:30 +0200
ed: Deal signals in a reliable way
The signal handlers were calling longjmp() but as the code was calling
non signal safe functions the behaviour was very unpredictable generating
segmentation faults and dead lock. This commit changes the signal handlers
to only set a variable that is checked in safe places where long loops
happen.
</content>
</entry>
<entry>
<id>95b96039755e86cf263bae342ed719e751bf0c1b</id>
<published>2023-09-26T06:17:00Z</published>
<updated>2023-09-26T08:50:15Z</updated>
<title>Ensure commands are followed by a blank</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/95b96039755e86cf263bae342ed719e751bf0c1b.gph" />
<author>
<name>Rene Kita</name>
<email>
[email protected]</email>
</author>
<content>commit 95b96039755e86cf263bae342ed719e751bf0c1b
parent 67a00c86f97f672c9fbceba9ad7ac1f747cca10b
Author: Rene Kita <
[email protected]>
Date: Tue, 26 Sep 2023 08:17:00 +0200
Ensure commands are followed by a blank
POSIX.1-2017 demands in Shell & Utilities under 'Commands in ed':
The e, E, f, r, and w commands shall take an optional file parameter,
separated from the command letter by one or more <blank> characters.
Ensure at least one <blank> character (as defined for the POSIX locale)
is present or error out.
Signed-off-by: Rene Kita <
[email protected]>
</content>
</entry>
<entry>
<id>67a00c86f97f672c9fbceba9ad7ac1f747cca10b</id>
<published>2023-09-22T17:44:54Z</published>
<updated>2023-09-22T18:45:38Z</updated>
<title>ed: Open output file for writing</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/67a00c86f97f672c9fbceba9ad7ac1f747cca10b.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 67a00c86f97f672c9fbceba9ad7ac1f747cca10b
parent feeb6e32792b1e4611a9a57476417fcf6b49e6c8
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 19:44:54 +0200
ed: Open output file for writing
Fopen() and Popen() were open as read streams, but we were writing
in both cases. In the same way, the FILE pointer returned by popen()
was close with fclose() that can lead to file descriptor leaks and
zombie processes.
</content>
</entry>
<entry>
<id>feeb6e32792b1e4611a9a57476417fcf6b49e6c8</id>
<published>2023-09-22T17:43:37Z</published>
<updated>2023-09-22T18:44:17Z</updated>
<title>ed: Don't discard full lines</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/feeb6e32792b1e4611a9a57476417fcf6b49e6c8.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit feeb6e32792b1e4611a9a57476417fcf6b49e6c8
parent 2cbf61dff99c349c5e629d4e8dc7714d03b576fa
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 19:43:37 +0200
ed: Don't discard full lines
Discard() was reading stdin until a new line was found, but in
case of having an empty line in the input buffer then it didn't
make sense because we were just discarding the full next line.
</content>
</entry>
<entry>
<id>2cbf61dff99c349c5e629d4e8dc7714d03b576fa</id>
<published>2023-09-22T12:19:36Z</published>
<updated>2023-09-22T12:19:36Z</updated>
<title>xargs: Read full lines is -I</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/2cbf61dff99c349c5e629d4e8dc7714d03b576fa.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 2cbf61dff99c349c5e629d4e8dc7714d03b576fa
parent fc85dc819da6dcc83bc6da0bb01e725256d2977e
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 14:19:36 +0200
xargs: Read full lines is -I
POSIX specifies that when -I is used then arguments are delimited
only by newlines.
</content>
</entry>
<entry>
<id>fc85dc819da6dcc83bc6da0bb01e725256d2977e</id>
<published>2023-09-22T12:18:14Z</published>
<updated>2023-09-22T12:18:14Z</updated>
<title>xargs: Free argument before substitution</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/fc85dc819da6dcc83bc6da0bb01e725256d2977e.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit fc85dc819da6dcc83bc6da0bb01e725256d2977e
parent a1f0426699523809ba50db47829c038ee4b762ab
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 14:18:14 +0200
xargs: Free argument before substitution
strnsubst() allocates a new array always, indepently of
the number of occurences of the replace string.
</content>
</entry>
<entry>
<id>a1f0426699523809ba50db47829c038ee4b762ab</id>
<published>2023-09-22T09:07:07Z</published>
<updated>2023-09-22T09:45:46Z</updated>
<title>xargs: Apply -I substitution to all the parameters</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/a1f0426699523809ba50db47829c038ee4b762ab.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit a1f0426699523809ba50db47829c038ee4b762ab
parent 22f110db281176b477ec8508b077750ab3449f97
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 11:07:07 +0200
xargs: Apply -I substitution to all the parameters
The substitution must happen in all the parameters that contain
the replacement string, but the code was soing the substitution
only once and in the parameter with an exact match.
Also, the argument length was not updated correctly, assuming
that the final argument had the size read from stdin.
</content>
</entry>
<entry>
<id>22f110db281176b477ec8508b077750ab3449f97</id>
<published>2023-09-22T09:24:37Z</published>
<updated>2023-09-22T09:44:58Z</updated>
<title>libutil: Remove free() from strnsub()</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/22f110db281176b477ec8508b077750ab3449f97.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 22f110db281176b477ec8508b077750ab3449f97
parent 4e8a096b1cffe97f96cee964e0273b2163130c4b
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 11:24:37 +0200
libutil: Remove free() from strnsub()
The free() was added in the wrong assumption that xargs was not
freeing the argument in the position replaced, but it actually
does it.
Also, removing the call to free() makes more general the function.
</content>
</entry>
<entry>
<id>4e8a096b1cffe97f96cee964e0273b2163130c4b</id>
<published>2023-09-22T08:54:08Z</published>
<updated>2023-09-22T08:54:08Z</updated>
<title>xargs: Update the man page about -I</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/4e8a096b1cffe97f96cee964e0273b2163130c4b.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit 4e8a096b1cffe97f96cee964e0273b2163130c4b
parent b3a80526345ec4d3fb69f7cd2844788b7347ac15
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 10:54:08 +0200
xargs: Update the man page about -I
</content>
</entry>
<entry>
<id>b3a80526345ec4d3fb69f7cd2844788b7347ac15</id>
<published>2023-09-22T08:37:18Z</published>
<updated>2023-09-22T08:37:18Z</updated>
<title>xargs: Add -x when -I is used</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/b3a80526345ec4d3fb69f7cd2844788b7347ac15.gph" />
<author>
<name>Roberto E. Vargas Caballero</name>
<email>
[email protected]</email>
</author>
<content>commit b3a80526345ec4d3fb69f7cd2844788b7347ac15
parent 8d97acc135239e7fae906e5fd3c479af240b3dea
Author: Roberto E. Vargas Caballero <
[email protected]>
Date: Fri, 22 Sep 2023 10:37:18 +0200
xargs: Add -x when -I is used
POSIX mandates to use -x when -I is used.
</content>
</entry>
<entry>
<id>8d97acc135239e7fae906e5fd3c479af240b3dea</id>
<published>2023-07-28T15:58:37Z</published>
<updated>2023-09-22T08:34:36Z</updated>
<title>xargs: add replace string flag (-I)</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8d97acc135239e7fae906e5fd3c479af240b3dea.gph" />
<author>
<name>sewn</name>
<email>
[email protected]</email>
</author>
<content>commit 8d97acc135239e7fae906e5fd3c479af240b3dea
parent f14887c76522b3a5d375351b6aa8432430447f6a
Author: sewn <
[email protected]>
Date: Fri, 28 Jul 2023 18:58:37 +0300
xargs: add replace string flag (-I)
</content>
</entry>
<entry>
<id>f14887c76522b3a5d375351b6aa8432430447f6a</id>
<published>2023-08-06T20:50:25Z</published>
<updated>2023-09-21T13:27:01Z</updated>
<title>tr: fix behavior of cflag when using character classes</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/f14887c76522b3a5d375351b6aa8432430447f6a.gph" />
<author>
<name>noneofyourbusiness</name>
<email>
[email protected]</email>
</author>
<content>commit f14887c76522b3a5d375351b6aa8432430447f6a
parent 0b4c2ceb2f4594cc9d5ca09e39fb57f6e4f82bfb
Author: noneofyourbusiness <
[email protected]>
Date: Sun, 6 Aug 2023 22:50:25 +0200
tr: fix behavior of cflag when using character classes
a simple test case:
printf ab3 | tr -c '[:alpha:]' '\n'
output should be ab<newline>, previously you would find just newlines.
Signed-off-by: noneofyourbusiness <
[email protected]>
</content>
</entry>
<entry>
<id>0b4c2ceb2f4594cc9d5ca09e39fb57f6e4f82bfb</id>
<published>2023-09-21T12:56:58Z</published>
<updated>2023-09-21T13:14:16Z</updated>
<title>ed: Add support for ! in w command</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/0b4c2ceb2f4594cc9d5ca09e39fb57f6e4f82bfb.gph" />
<author>
<name>Heiko Berges</name>
<email>
[email protected]</email>
</author>
<content>commit 0b4c2ceb2f4594cc9d5ca09e39fb57f6e4f82bfb
parent 53040766d1a09baa7412c73c9a93afac2bfd6acc
Author: Heiko Berges <
[email protected]>
Date: Thu, 21 Sep 2023 14:56:58 +0200
ed: Add support for ! in w command
When the file name begins with ! then the addressed buffer content is
piped to the name of the file that is considered a command that is
executed in a shell.
</content>
</entry>
<entry>
<id>53040766d1a09baa7412c73c9a93afac2bfd6acc</id>
<published>2019-05-20T08:36:32Z</published>
<updated>2023-04-13T04:37:04Z</updated>
<title>cmp: Make output of error message POSIX compliant</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/53040766d1a09baa7412c73c9a93afac2bfd6acc.gph" />
<author>
<name>Richard Ipsum</name>
<email>
[email protected]</email>
</author>
<content>commit 53040766d1a09baa7412c73c9a93afac2bfd6acc
parent 446903d68849d9db08c9d75d04c0b86f3bf63bf0
Author: Richard Ipsum <
[email protected]>
Date: Mon, 20 May 2019 09:36:32 +0100
cmp: Make output of error message POSIX compliant
From POSIX:
in the POSIX locale the following diagnostic message shall be written:
"cmp: EOF on %s%s\n", <name of shorter file>, <additional info>
Amended by mcf: kept weprintf for consistency with other diagnostic
messages, but dropped the doubled prefix.
</content>
</entry>
<entry>
<id>446903d68849d9db08c9d75d04c0b86f3bf63bf0</id>
<published>2022-03-23T13:39:58Z</published>
<updated>2023-04-13T04:22:28Z</updated>
<title>libutf: add some const's</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/446903d68849d9db08c9d75d04c0b86f3bf63bf0.gph" />
<author>
<name>David Demelier</name>
<email>
[email protected]</email>
</author>
<content>commit 446903d68849d9db08c9d75d04c0b86f3bf63bf0
parent 7fc2f68aeccb7e488f7a6c6efbc4b82fa7a1452a
Author: David Demelier <
[email protected]>
Date: Wed, 23 Mar 2022 14:39:58 +0100
libutf: add some const's
</content>
</entry>
<entry>
<id>7fc2f68aeccb7e488f7a6c6efbc4b82fa7a1452a</id>
<published>2023-04-13T04:20:56Z</published>
<updated>2023-04-13T04:20:56Z</updated>
<title>libutf: Update to unicode 15.0.0</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/7fc2f68aeccb7e488f7a6c6efbc4b82fa7a1452a.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit 7fc2f68aeccb7e488f7a6c6efbc4b82fa7a1452a
parent df50727a08e3bf97a73dc42df3e15a1c21a339a8
Author: Michael Forney <
[email protected]>
Date: Wed, 12 Apr 2023 21:20:56 -0700
libutf: Update to unicode 15.0.0
</content>
</entry>
<entry>
<id>df50727a08e3bf97a73dc42df3e15a1c21a339a8</id>
<published>2021-08-11T15:47:04Z</published>
<updated>2023-04-13T04:16:30Z</updated>
<title>refer to re_format(7) for BSDs</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/df50727a08e3bf97a73dc42df3e15a1c21a339a8.gph" />
<author>
<name>Greg Reagle</name>
<email>
[email protected]</email>
</author>
<content>commit df50727a08e3bf97a73dc42df3e15a1c21a339a8
parent 8dfcbf23b0b767f941d55364d8aff9785b7e91a5
Author: Greg Reagle <
[email protected]>
Date: Wed, 11 Aug 2021 11:47:04 -0400
refer to re_format(7) for BSDs
</content>
</entry>
<entry>
<id>8dfcbf23b0b767f941d55364d8aff9785b7e91a5</id>
<published>2022-03-06T12:14:01Z</published>
<updated>2023-04-13T04:09:12Z</updated>
<title>cp: don't abort when src and dest file are the same</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/8dfcbf23b0b767f941d55364d8aff9785b7e91a5.gph" />
<author>
<name>Arthur Williams</name>
<email>
[email protected]</email>
</author>
<content>commit 8dfcbf23b0b767f941d55364d8aff9785b7e91a5
parent 499c3b12272b09bf3450107daeb25a8d0282affe
Author: Arthur Williams <
[email protected]>
Date: Sun, 6 Mar 2022 04:14:01 -0800
cp: don't abort when src and dest file are the same
The POSIX spec gives many options on how to handle this case, but it
also states that cp (and mv) should continue with remaining operands
regardless. We used to exit immediately, which violates the spec.
This change makes cp/mv not exit immediately in this case and
also won't cause the return value to be non-zero.
From `man 1p cp`:
If source_file references the same file as dest_file, cp may write
a diagnostic message to standard error; it shall do nothing more
with source_file and shall go on to any remaining files.
</content>
</entry>
<entry>
<id>499c3b12272b09bf3450107daeb25a8d0282affe</id>
<published>2023-01-24T23:44:07Z</published>
<updated>2023-04-13T04:01:30Z</updated>
<title>sort.1: fix typo</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/499c3b12272b09bf3450107daeb25a8d0282affe.gph" />
<author>
<name>Andrea Calligaris</name>
<email>
[email protected]</email>
</author>
<content>commit 499c3b12272b09bf3450107daeb25a8d0282affe
parent 93f34c1840850b3d592df515563225bf91d7b457
Author: Andrea Calligaris <
[email protected]>
Date: Wed, 25 Jan 2023 00:44:07 +0100
sort.1: fix typo
</content>
</entry>
<entry>
<id>93f34c1840850b3d592df515563225bf91d7b457</id>
<published>2023-02-08T16:35:08Z</published>
<updated>2023-04-13T04:01:27Z</updated>
<title>ed: Fix 'w' command not respecting '-s' option</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/93f34c1840850b3d592df515563225bf91d7b457.gph" />
<author>
<name>Andrea Calligaris</name>
<email>
[email protected]</email>
</author>
<content>commit 93f34c1840850b3d592df515563225bf91d7b457
parent fb16e7c6ad0e8d27cba8ee6279f71f88c7f95fd7
Author: Andrea Calligaris <
[email protected]>
Date: Wed, 8 Feb 2023 17:35:08 +0100
ed: Fix 'w' command not respecting '-s' option
</content>
</entry>
<entry>
<id>fb16e7c6ad0e8d27cba8ee6279f71f88c7f95fd7</id>
<published>2023-04-13T03:13:51Z</published>
<updated>2023-04-13T03:47:34Z</updated>
<title>dd: Consider block count in inner read loop</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/fb16e7c6ad0e8d27cba8ee6279f71f88c7f95fd7.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit fb16e7c6ad0e8d27cba8ee6279f71f88c7f95fd7
parent 00995639fe3b885494d7dfeda7af618ba018fdd1
Author: Michael Forney <
[email protected]>
Date: Wed, 12 Apr 2023 20:13:51 -0700
dd: Consider block count in inner read loop
When ibs is smaller than obs, checking the block count in the outer
loop is not sufficient; we need to break out of the inner read loop
once we've read the specified number of blocks.
Thanks to phoebos for reporting this issue.
</content>
</entry>
<entry>
<id>00995639fe3b885494d7dfeda7af618ba018fdd1</id>
<published>2022-12-04T08:32:21Z</published>
<updated>2023-04-13T03:09:51Z</updated>
<title>dd: Fix backwards comparison when handling short writes</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/00995639fe3b885494d7dfeda7af618ba018fdd1.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit 00995639fe3b885494d7dfeda7af618ba018fdd1
parent 191f7e693b16dfc0f6242c4247ceded99e69878c
Author: Michael Forney <
[email protected]>
Date: Sun, 4 Dec 2022 00:32:21 -0800
dd: Fix backwards comparison when handling short writes
ipos is always ahead of opos, so the left side of this condition
was never true. This only mattered when we get short writes, since
on EOF we always have less than a full output block, so it takes
only one normal write.
</content>
</entry>
<entry>
<id>191f7e693b16dfc0f6242c4247ceded99e69878c</id>
<published>2022-10-20T03:29:14Z</published>
<updated>2022-10-22T01:31:52Z</updated>
<title>find: insert -a in before open parens as well</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/191f7e693b16dfc0f6242c4247ceded99e69878c.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit 191f7e693b16dfc0f6242c4247ceded99e69878c
parent 63271b47f7e045cdee3fa90178560f982b70c218
Author: Michael Forney <
[email protected]>
Date: Wed, 19 Oct 2022 20:29:14 -0700
find: insert -a in before open parens as well
This fixes expressions like -type f '(' -name foo -o -name bar ')'.
</content>
</entry>
<entry>
<id>63271b47f7e045cdee3fa90178560f982b70c218</id>
<published>2022-06-20T10:39:59Z</published>
<updated>2022-06-20T10:39:59Z</updated>
<title>setsid: fix usage information for -f flag</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/63271b47f7e045cdee3fa90178560f982b70c218.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>
[email protected]</email>
</author>
<content>commit 63271b47f7e045cdee3fa90178560f982b70c218
parent c3e47c1f4474061b8c37937247c17c6f11b7e18c
Author: Hiltjo Posthuma <
[email protected]>
Date: Mon, 20 Jun 2022 12:39:59 +0200
setsid: fix usage information for -f flag
</content>
</entry>
<entry>
<id>c3e47c1f4474061b8c37937247c17c6f11b7e18c</id>
<published>2022-03-23T00:14:53Z</published>
<updated>2022-03-23T00:20:51Z</updated>
<title>Fix LICENSE name</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/c3e47c1f4474061b8c37937247c17c6f11b7e18c.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit c3e47c1f4474061b8c37937247c17c6f11b7e18c
parent 2c2a7f54ab55a022a617e510b6e00c3e2736fabd
Author: Michael Forney <
[email protected]>
Date: Tue, 22 Mar 2022 17:14:53 -0700
Fix LICENSE name
The license text matches (and has always matched) what is known as
the MIT license[0]. The MIT/X Consortium license, also called the
X11 license, is slightly different and has an additional clause
prohibiting various uses of the X Consortium name.
[0]
https://opensource.org/licenses/MIT
</content>
</entry>
<entry>
<id>2c2a7f54ab55a022a617e510b6e00c3e2736fabd</id>
<published>2021-09-04T00:08:21Z</published>
<updated>2021-10-23T23:17:20Z</updated>
<title>nohup: Open nohup.out WRONLY</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/2c2a7f54ab55a022a617e510b6e00c3e2736fabd.gph" />
<author>
<name>Arthur Williams</name>
<email>
[email protected]</email>
</author>
<content>commit 2c2a7f54ab55a022a617e510b6e00c3e2736fabd
parent 371f3cb5ec3b8ef3135b3729326bfd6c7b7cb85c
Author: Arthur Williams <
[email protected]>
Date: Fri, 3 Sep 2021 19:08:21 -0500
nohup: Open nohup.out WRONLY
Open nohup.out write-only instead of not specifying the access permissions
instead of getting undefined behavior (which probably results in stdout
not being writable).
</content>
</entry>
<entry>
<id>371f3cb5ec3b8ef3135b3729326bfd6c7b7cb85c</id>
<published>2021-09-11T05:45:30Z</published>
<updated>2021-09-11T05:48:47Z</updated>
<title>find: Flush stdout before executing commands</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/371f3cb5ec3b8ef3135b3729326bfd6c7b7cb85c.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit 371f3cb5ec3b8ef3135b3729326bfd6c7b7cb85c
parent c331811c91d9141a1b6c5273115517185d39df60
Author: Michael Forney <
[email protected]>
Date: Fri, 10 Sep 2021 22:45:30 -0700
find: Flush stdout before executing commands
The commands may produce output themselves, so this is required to
ensure that our -print output is actually written before a command's
output, and also that we don't end up with partially written lines
due to stdout buffering intermixed with the output of other commands.
Other implementations of find(1) do the same.
</content>
</entry>
<entry>
<id>c331811c91d9141a1b6c5273115517185d39df60</id>
<published>2021-09-11T05:43:54Z</published>
<updated>2021-09-11T05:43:54Z</updated>
<title>find: Add spawn helper function</title>
<link rel="alternate" href="
gopher://suckless.org/1/git/sbase/commit/c331811c91d9141a1b6c5273115517185d39df60.gph" />
<author>
<name>Michael Forney</name>
<email>
[email protected]</email>
</author>
<content>commit c331811c91d9141a1b6c5273115517185d39df60
parent 7d60e2cabbe07495ee74f3d5e705f1e3470148eb
Author: Michael Forney <
[email protected]>
Date: Fri, 10 Sep 2021 22:43:54 -0700
find: Add spawn helper function
</content>
</entry>
</feed>