Go to file
Patrick Steinhardt eebc9e4dc2 tests: (col) avoid hardcoding of errno string
The col/multibyte test has a hardcoded error string as part of its
expected output that is returned by glibc's strerror(3P) function. Even
though many of these strings are the same across libc implementations,
they are not standardiced and some are certainly different. One example
is the string for EILSEQ on musl libc.

To fix this, we introduce a new test helper "test_strerror". The helper
can be invoked with an error code like "EILSEQ", which will cause it to
print out the the respective error message for that code. Note that
"test_strerror" cannot act on the error's value (e.g. 84 for EILSEQ), as
these aren't standardized either. Instead, we thus need to have an array
of the error's string representation ("EILSEQ") to its respective error
code (the define EILSEQ). The array can trivially be extended as
required, thus it is only sparsely populated with EILSEQ right now.

To fix the col/multibyte test, we introduce a call to sed(1) to replace
the strerror(3P) message from EILSEQ with "EILSEQ". Furthermore, as
we're running tests with the POSIX locale by default which treats all
bytes as valid multibyte sequences, we have to change to the C.UTF-8
locale instead to actually get an error.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
2019-08-27 09:37:01 +02:00
Documentation TODO: fix typo 2019-06-21 23:21:46 +05:30
bash-completion mountpoint: add --nofollow option 2019-08-02 19:39:05 +01:00
config build-sys: gtkdoc-fixxref v1.27 requires module option 2018-02-01 13:23:40 +01:00
disk-utils partx: document -d vs. --nr and fix test 2019-08-21 13:42:22 +02:00
include include/xalloc: reindent function bodies to unify indentation 2019-08-21 15:00:16 +02:00
lib lib/ttyutils: avoid checking same thing twice 2019-07-01 22:02:06 +01:00
libblkid libblkid: fix file descriptor leak in blkid_verify() 2019-07-31 16:31:10 +02:00
libfdisk libfidk: (dos) fix tiny partitions calculation 2019-08-22 14:00:32 +02:00
libmount libmount: fix comment referring to passno field 2019-08-20 14:04:33 +02:00
libsmartcols libsmartcols: cleanup and extend padding functionality 2019-07-23 16:24:42 +02:00
libuuid libuuid: fix man page typos 2018-12-10 12:47:50 +01:00
login-utils setpwnam: use more appropriate allocation size types 2019-08-21 15:00:16 +02:00
m4 build-sys: add UL_REQUIRES_ARCH() 2019-07-15 15:31:40 +02:00
misc-utils lsblk: fix -E segfault 2019-07-15 12:28:26 +02:00
po Fix -n to -b in German help message 2019-08-22 09:02:49 +02:00
schedutils misc: consolidate version printing and close_stdout() 2019-04-16 15:14:13 +02:00
sys-utils sys-utils/manuals: Make the number of the paired macros ".RS" and ".RE" equal 2019-08-27 09:31:10 +02:00
term-utils Remove isascii usage 2019-08-08 12:12:55 -07:00
tests tests: (col) avoid hardcoding of errno string 2019-08-27 09:37:01 +02:00
text-utils column: pass control struct to local_wcstok() 2019-08-21 15:00:16 +02:00
tools build-sys: add devel-non-asan.conf 2019-04-24 18:04:24 +02:00
.editorconfig add .editorconfig 2016-01-25 00:12:14 +01:00
.gitignore hardlink: enable build with and without pcre2 2018-11-12 19:40:33 +01:00
.travis-functions.sh build-sys: don't use ASAN on XOS 2019-04-25 10:18:08 +02:00
.travis.yml docs: add info about branches; update travis.yml 2018-10-24 13:02:59 +02:00
AUTHORS docs: update AUTHORS file 2019-06-14 12:30:20 +02:00
COPYING docs: corrections to FSF license files, and postal address 2012-02-24 14:13:35 +01:00
ChangeLog build-sys: use AUTOMAKE_OPTIONS = gnu 2011-05-26 15:04:01 +02:00
Makefile.am build-sys: add --with-pkgconfigdir 2019-05-14 13:50:59 +02:00
NEWS docs: we have 2019 already 2019-06-17 12:55:25 +02:00
README docs: add link to mail list archive 2018-12-17 10:16:22 +01:00
README.licensing docs: use SPDX license names 2018-08-16 14:47:21 +02:00
autogen.sh build-sys: improve bison version detection 2018-04-30 09:43:32 +02:00
configure.ac build-sys: improve hwclock CMOS dependences 2019-07-15 15:32:49 +02:00
util-linux.doap docs: replace FTP by HTTPS in kernel.org URLs 2016-12-19 11:22:26 +01:00

README

				  util-linux

		util-linux is a random collection of Linux utilities

     Note: for the years 2006-2010 this project was named "util-linux-ng".

MAILING LIST:

      E-MAIL:  util-linux@vger.kernel.org
      URL:     http://vger.kernel.org/vger-lists.html#util-linux
      ARCHIVE: https://lore.kernel.org/util-linux/

      The mailing list will reject email messages that contain:
       - more than 100K characters
       - html
       - spam phrases/keywords
      See: http://vger.kernel.org/majordomo-info.html#taboo

IRC CHANNEL:

      #util-linux at freenode.net:

      irc://chat.freenode.net/util-linux

      The IRC channel and Mailing list are for developers and project
      maintainers. For end users it is recommended to utilize the
      distribution's support system.

BUG REPORTING:

      E-MAIL: util-linux@vger.kernel.org
      Web:    https://github.com/karelzak/util-linux/issues

      This project has no resources to provide support for distribution specific
      issues. For end users it is recommended to utilize the distribution's
      support system.

NLS (PO TRANSLATIONS):

      PO files are maintained by:
	  http://translationproject.org/domain/util-linux.html

VERSION SCHEMA:

      Standard releases:
	  <major>.<minor>[.<maint>]
	     major = fatal and deep changes
	     minor = typical release with new features
	     maint = maintenance releases; bug fixes only

      Development releases:
	 <major>.<minor>-rc<N>

SOURCE CODE:

 Download archive:
	  https://www.kernel.org/pub/linux/utils/util-linux/

 SCM (Source Code Management) Repository:

    Primary repository:
	  git clone git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git

    Backup repository:
	  git clone git://github.com/karelzak/util-linux.git

    Web interfaces:
	  http://git.kernel.org/cgit/utils/util-linux/util-linux.git
	  https://github.com/karelzak/util-linux

      Note: the GitHub repository may contain temporary development branches too.

      The kernel.org repository contains master (current development) and stable/*
      (maintenance) branches only. All master or stable/* changes are always pushed
      to both repositories at the same time.

    Repository Branches: 'git branch -a'
	  master branch
	   - current development
	   - the source for stable releases when deemed ready.
	   - day-to-day status is: 'it works for me'. This means that its
	     normal state is useful but not well tested.
	   - long-term development or invasive changes in active development are
	     forked into separate 'topic' branches from the tip of 'master'.

	  stable/ branches
	   - public releases
	   - branch name: stable/v<major>.<minor>.
	   - created from the 'master' branch after two or more release
	     candidates and the final public release. This means that the stable
	     releases are committed, tagged, and reachable in 'master'.
	   - these branches then become forked development branches. This means
	     that any changes made to them diverge from the 'master' branch.
	   - maintenance releases are part of, and belong to, their respective
	     stable branch. As such, they are tags(<major>.<minor>.<maint>) and
	     not branches of their own. They are not part of, visible in, or
	     have anything to do with the 'master' development branch. In git
	     terminology: maintenance releases are not reachable from 'master'.
	   - when initially cloned (as with the 'git clone' command given above)
	     these branches are created as 'remote tracking branches' and are
	     only visible by using the -a or -r options to 'git branch'. To
	     create a local branch use the desired tag with this command:
	     'git checkout -b v2.29.2 v2.29.2'

    Tags: 'git tag'
	   - a new tag object is created for every release.
	   - tag name: v<version>.
	   - all tags are signed by the maintainer's PGP key.

    Known Bugs:
	- don't use tag v2.13.1 (created and published by mistake),
	  use v2.13.1-REAL instead.

WORKFLOW EXAMPLE:

 1) development (branch: <master>)

 2) master release (tags: v2.29-rc1, v2.29-rc2, v2.29, branch: <master>)

 3) development (work on v2.30, branch: <master>)

 4) fork -- create a new branch <stable/v2.29> based on tag v2.29

     4a) new patches or cherry-pick patches from <master> (branch: <stable/v2.29>)

     4b) stable release (tag: v2.29.1, branch: <stable/v2.29>)

     4c) more patches; another release (tag: v2.29.2, branch: <stable/v2.29>)

 5) master release v2.30 (branch: <master>)
    ...

where 3) and 4) happen simultaneously.