Adding --is-tiocsti parameter (injects in prompt, which is undesired), updating year to 2023, removing WIP defines for TIOCSTI debugging #478

This commit is contained in:
Martin Dvorak 2023-03-19 19:00:24 +01:00
parent 83560c473b
commit 451758c0c1
66 changed files with 199 additions and 99 deletions

1
.gitignore vendored
View file

@ -12,6 +12,7 @@
/src/hstr /src/hstr
/src/hh /src/hh
.deps/ .deps/
.vscode
Makefile Makefile
Makefile.in Makefile.in
*.o *.o

View file

@ -1,3 +1,8 @@
2023-03-19 Martin Dvorak <martin.dvorak@mindforger.com>
* Released v2.7.0 - important fix release ensuring that HSTR will work
on operating systems and Linux kernels without TIOCSTI support.
2022-12-11 Martin Dvorak <martin.dvorak@mindforger.com> 2022-12-11 Martin Dvorak <martin.dvorak@mindforger.com>
* Released v2.6.0 - fix release (several memory leak and overflow fixes, * Released v2.6.0 - fix release (several memory leak and overflow fixes,

View file

@ -4,7 +4,7 @@
# Contributor: Busindre <busilezas at busindre.com> # Contributor: Busindre <busilezas at busindre.com>
pkgname=hstr pkgname=hstr
pkgver=2.6 pkgver=2.7
pkgrel=1 pkgrel=1
pkgdesc="A command line utility that brings improved BASH command completion from the history. It aims to make completion easier and more efficient than Ctrl-r." pkgdesc="A command line utility that brings improved BASH command completion from the history. It aims to make completion easier and more efficient than Ctrl-r."
arch=('x86_64' arch=('x86_64'

View file

@ -4,18 +4,19 @@
The following HSTR versions are currently being supported with security updates. The following HSTR versions are currently being supported with security updates.
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | -------- | ------------------ |
| 2.6.0 | :white_check_mark: | | 2.7.0 | :white_check_mark: |
| 2.5.0 | :white_check_mark: | | 2.6.0 | :white_check_mark: |
| 2.4.0 | :white_check_mark: | | 2.5.0 | :white_check_mark: |
| <= 2.3.0 | :x: | | 2.4.0 | :white_check_mark: |
| <= 2.3.0 | :x: |
## Reporting a Vulnerability ## Reporting a Vulnerability
Please report HSTR vulnerabilities to Please report HSTR vulnerabilities to
[martin.dvorak@mindforger.com](martin.dvorak@mindforger.com) [martin.dvorak@mindforger.com](martin.dvorak@mindforger.com)
All reported vulnerabilities will be examined, reproduced and All reported vulnerabilities will be examined, reproduced and
expected fix release and release date will be shared with expected fix release and release date will be shared with
the reporter. the reporter.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2016-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2016-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -147,8 +147,8 @@ then
exit 1 exit 1
fi fi
export ARG_BAZAAR_MSG="HSTR 2.6.0" export ARG_BAZAAR_MSG="HSTR 2.7.0"
export ARG_VERSION="2.6.0" export ARG_VERSION="2.7.0"
# Debian releases: https://www.debian.org/releases/ # Debian releases: https://www.debian.org/releases/
# 6/7/8/9/10: squeeze wheezy jessie stretch buster # 6/7/8/9/10: squeeze wheezy jessie stretch buster

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@ -20,7 +20,7 @@
# This script is available from http://www.mindforger.com/fedora/fedora-rpm-from-deb.sh # This script is available from http://www.mindforger.com/fedora/fedora-rpm-from-deb.sh
# to be easily available in VMs # to be easily available in VMs
export MFVERSION="2.6.0" export MFVERSION="2.7.0"
export MFPRJNAME="hstr-${MFVERSION}" export MFPRJNAME="hstr-${MFVERSION}"
export AMD64NAME="hstr_${MFVERSION}-1_amd64" export AMD64NAME="hstr_${MFVERSION}-1_amd64"
export I386NAME="hstr_${MFVERSION}-1_i386" export I386NAME="hstr_${MFVERSION}-1_i386"

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,7 +20,7 @@
export SCRIPT_HOME=`pwd` export SCRIPT_HOME=`pwd`
export HSTR_VERSION="2.6.0" export HSTR_VERSION="2.7.0"
export NOW=`date +%Y-%m-%d--%H-%M-%S` export NOW=`date +%Y-%m-%d--%H-%M-%S`
export GH_RELEASE_DIR=~/p/hstr/release export GH_RELEASE_DIR=~/p/hstr/release

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
# .travis.yml Travis CI configuration file for HSTR # .travis.yml Travis CI configuration file for HSTR
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -163,8 +163,8 @@ then
exit 1 exit 1
fi fi
export ARG_BAZAAR_MSG="Release 2.6" export ARG_BAZAAR_MSG="Release 2.7"
export ARG_MAJOR_VERSION=2.6. export ARG_MAJOR_VERSION=2.7.
export ARG_MINOR_VERSION=1 # minor version is incremented for every Ubuntu version export ARG_MINOR_VERSION=1 # minor version is incremented for every Ubuntu version
# https://wiki.ubuntu.com/Releases # https://wiki.ubuntu.com/Releases

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
# configure.ac Autoconf configuration file # configure.ac Autoconf configuration file
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,7 +20,7 @@
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_INIT(hstr, 2.6.0, martin.dvorak@mindforger.com) AC_INIT(hstr, 2.7.0, martin.dvorak@mindforger.com)
AC_CONFIG_FILES([Makefile src/Makefile man/Makefile]) AC_CONFIG_FILES([Makefile src/Makefile man/Makefile])
# Check src dir existence. # Check src dir existence.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
# hstr.pro Qt project file for HSTR shell history compleation utility # hstr.pro Qt project file for HSTR shell history completion utility
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -61,6 +61,7 @@ hstrdebug {
} }
QMAKE_LINK = gcc QMAKE_LINK = gcc
DEFINES += LINUX_KERNEL_6 # TIOCSTI debugging:
# DEFINES += __CYGWIN__
message(DEFINES of hstr.pro build: $$DEFINES) message(DEFINES of hstr.pro build: $$DEFINES)

10
pad.xml
View file

@ -2,7 +2,7 @@
<!-- <!--
pad.xml PAD file for HSTR pad.xml PAD file for HSTR
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -51,10 +51,10 @@
</Company_Info> </Company_Info>
<Program_Info> <Program_Info>
<Program_Name>HSTR</Program_Name> <Program_Name>HSTR</Program_Name>
<Program_Version>2.6.0</Program_Version> <Program_Version>2.7.0</Program_Version>
<Program_Release_Month>12</Program_Release_Month> <Program_Release_Month>3</Program_Release_Month>
<Program_Release_Day>10</Program_Release_Day> <Program_Release_Day>19</Program_Release_Day>
<Program_Release_Year>2022</Program_Release_Year> <Program_Release_Year>2023</Program_Release_Year>
<Program_Cost_Dollars /> <Program_Cost_Dollars />
<Program_Cost_Other_Code>USD</Program_Cost_Other_Code> <Program_Cost_Other_Code>USD</Program_Cost_Other_Code>
<Program_Cost_Other /> <Program_Cost_Other />

View file

@ -1,6 +1,6 @@
# snapcraft.yaml snap builder configuration # snapcraft.yaml snap builder configuration
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hashset.c hash set implementation hashset.c hash set implementation
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr.c HSTR shell history completion utility hstr.c HSTR shell history completion utility
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -137,7 +137,7 @@
// major.minor.revision // major.minor.revision
static const char* VERSION_STRING= static const char* VERSION_STRING=
"hstr version \"2.7.0\" (2023-03-11T18:15:00)" "hstr version \"2.7.0\" (2023-03-19T18:15:00)"
"\n"; "\n";
static const char* HSTR_VIEW_LABELS[]={ static const char* HSTR_VIEW_LABELS[]={
@ -190,7 +190,7 @@ static const char* INSTALL_BASH_STRING=
"\n READLINE_POINT=${#READLINE_LINE}" "\n READLINE_POINT=${#READLINE_LINE}"
"\n}" "\n}"
"\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstrwsl\"'; fi" "\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstrwsl\"'; fi"
#elif defined(__CYGWIN__) || defined(LINUX_KERNEL_6) #elif defined(__CYGWIN__)
"\nfunction hstrcygwin {" "\nfunction hstrcygwin {"
"\n offset=${READLINE_POINT}" "\n offset=${READLINE_POINT}"
"\n READLINE_POINT=0" "\n READLINE_POINT=0"
@ -263,6 +263,7 @@ static const char* HELP_STRING=
"\n --show-configuration -s ... show configuration to be added to ~/.bashrc" "\n --show-configuration -s ... show configuration to be added to ~/.bashrc"
"\n --show-zsh-configuration -z ... show zsh configuration to be added to ~/.zshrc" "\n --show-zsh-configuration -z ... show zsh configuration to be added to ~/.zshrc"
"\n --show-blacklist -b ... show commands to skip on history indexation" "\n --show-blacklist -b ... show commands to skip on history indexation"
"\n --is-tiocsti -t ... detect whether TIOCSTI is supported and print y or n"
"\n --insert-in-terminal=[c] -i ... insert command c in terminal prompt and exit" "\n --insert-in-terminal=[c] -i ... insert command c in terminal prompt and exit"
"\n --version -V ... show version details" "\n --version -V ... show version details"
"\n --help -h ... help" "\n --help -h ... help"
@ -288,6 +289,7 @@ static const struct option long_options[] = {
{"show-configuration", GETOPT_NO_ARGUMENT, NULL, 's'}, {"show-configuration", GETOPT_NO_ARGUMENT, NULL, 's'},
{"show-zsh-configuration", GETOPT_NO_ARGUMENT, NULL, 'z'}, {"show-zsh-configuration", GETOPT_NO_ARGUMENT, NULL, 'z'},
{"show-blacklist", GETOPT_NO_ARGUMENT, NULL, 'b'}, {"show-blacklist", GETOPT_NO_ARGUMENT, NULL, 'b'},
{"is-tiocsti", GETOPT_NO_ARGUMENT, NULL, 't'},
{"insert-in-terminal", GETOPT_REQUIRED_ARGUMENT, NULL, 'i'}, {"insert-in-terminal", GETOPT_REQUIRED_ARGUMENT, NULL, 'i'},
{0, 0, NULL, 0 } {0, 0, NULL, 0 }
}; };
@ -1670,7 +1672,7 @@ void hstr_interactive(void)
void hstr_getopt(int argc, char **argv) void hstr_getopt(int argc, char **argv)
{ {
int option_index = 0; int option_index = 0;
int option = getopt_long(argc, argv, "fkVhnszbi", long_options, &option_index); int option = getopt_long(argc, argv, "fkVhnszbti", long_options, &option_index);
if(option != -1) { if(option != -1) {
switch(option) { switch(option) {
case 'f': case 'f':
@ -1700,6 +1702,14 @@ void hstr_getopt(int argc, char **argv)
printf("%s", VERSION_STRING); printf("%s", VERSION_STRING);
hstr_exit(EXIT_SUCCESS); hstr_exit(EXIT_SUCCESS);
break; break;
case 't':
if(is_tiocsti) {
printf("y");
} else {
printf("n");
}
hstr_exit(EXIT_SUCCESS);
break;
case 'h': case 'h':
printf("%s", HELP_STRING); printf("%s", HELP_STRING);
hstr_exit(EXIT_SUCCESS); hstr_exit(EXIT_SUCCESS);
@ -1710,7 +1720,7 @@ void hstr_getopt(int argc, char **argv)
break; break;
case 's': case 's':
// ZSH_VERSION is not exported by zsh > detected by parent process name // ZSH_VERSION is not exported by zsh > detected by parent process name
if(isZshParentShell()) { if(is_zsh_parent_shell()) {
printf("%s", INSTALL_ZSH_STRING); printf("%s", INSTALL_ZSH_STRING);
} else { } else {
printf("%s", INSTALL_BASH_STRING); printf("%s", INSTALL_BASH_STRING);
@ -1733,6 +1743,9 @@ int hstr_main(int argc, char* argv[])
{ {
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
// initialize global TIOCSTI indicator
is_tiocsti = is_tiocsti_supported();
hstr=malloc(sizeof(Hstr)); hstr=malloc(sizeof(Hstr));
hstr_init(); hstr_init();

View file

@ -1,7 +1,7 @@
/* /*
hstr_blacklist.c commands to be skipped from history hstr_blacklist.c commands to be skipped from history
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -2,7 +2,7 @@
hstr_curses.c Curses utilities hstr_curses.c Curses utilities
http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_favorites.c favorite commands hstr_favorites.c favorite commands
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_history.c loading and processing of BASH history hstr_history.c loading and processing of BASH history
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -49,7 +49,7 @@ char* get_history_file_name(void)
{ {
char* historyFile = getenv(ENV_VAR_HISTFILE); char* historyFile = getenv(ENV_VAR_HISTFILE);
if(!historyFile || strlen(historyFile)==0) { if(!historyFile || strlen(historyFile)==0) {
if(isZshParentShell()) { if(is_zsh_parent_shell()) {
historyFile = get_home_file_path(FILE_ZSH_HISTORY); historyFile = get_home_file_path(FILE_ZSH_HISTORY);
if(access(historyFile, F_OK) == -1) { if(access(historyFile, F_OK) == -1) {
free(historyFile); free(historyFile);
@ -104,7 +104,7 @@ char* parse_history_line(char *l)
#ifndef HSTR_TESTS_UNIT #ifndef HSTR_TESTS_UNIT
static bool isZsh, c; static bool isZsh, c;
if(!c) { if(!c) {
isZsh=isZshParentShell(); isZsh=is_zsh_parent_shell();
c=true; c=true;
} }
#endif #endif
@ -405,7 +405,7 @@ int history_mgmt_remove_from_ranked(char *cmd, HistoryItems *history) {
void history_mgmt_flush(void) void history_mgmt_flush(void)
{ {
if(dirty && !isZshParentShell()) { if(dirty && !is_zsh_parent_shell()) {
fill_terminal_input("history -r\n", false); fill_terminal_input("history -r\n", false);
} }
} }

View file

@ -1,7 +1,7 @@
/* /*
hstr_regexp.c simplified regexp that suits HSTR needs - matching and caching hstr_regexp.c simplified regexp that suits HSTR needs - matching and caching
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_utils.c utilities hstr_utils.c utilities
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,10 +23,15 @@
// TODO PID_BUFFER 20+ characters might be enough // TODO PID_BUFFER 20+ characters might be enough
#define PID_BUFFER_SIZE 128 #define PID_BUFFER_SIZE 128
// This define is used to compile out code which inserts command to console - thus /*
// define allows to activate and debug shell script workaround that is used on WSL * global variables
// and Cygwin. */
//#define DEBUG_NO_TIOCSTI
bool is_tiocsti = false;
/*
* functions
*/
// strdup() not in ISO C // strdup() not in ISO C
char* hstr_strdup(const char* s) char* hstr_strdup(const char* s)
@ -106,7 +111,38 @@ void hstr_chop(char *s)
} }
} }
#if !defined(__MS_WSL__) && !defined(__CYGWIN__) && !defined(LINUX_KERNEL_6) && !defined(DEBUG_NO_TIOCSTI) bool is_tiocsti_supported()
{
#if defined(__MS_WSL__) || defined(__CYGWIN__)
return false;
#else
int fd;
struct termios t;
fd = open("/dev/tty", O_RDWR);
if (fd < 0) {
perror("open /dev/tty");
printf("Error: unable to detect whether TIOCSTI is supported by the kernel");
return false;
}
if (tcgetattr(fd, &t) < 0) {
perror("tcgetattr");
printf("Error: unable to detect whether TIOCSTI is supported by the kernel");
return false;
}
bool is_supported = false;
if (!ioctl(fd, TIOCSTI, "a")) {
return true;
}
close(fd);
return is_supported;
#endif
}
#if !defined(__MS_WSL__) && !defined(__CYGWIN__)
void tiocsti() void tiocsti()
{ {
char buf[] = DEFAULT_COMMAND; char buf[] = DEFAULT_COMMAND;
@ -120,7 +156,7 @@ void tiocsti()
void fill_terminal_input(char* cmd, bool padding) void fill_terminal_input(char* cmd, bool padding)
{ {
if(cmd && strlen(cmd)>0) { if(cmd && strlen(cmd)>0) {
#if defined(__MS_WSL__) || defined(__CYGWIN__) || defined(LINUX_KERNEL_6) || defined(DEBUG_NO_TIOCSTI) #if defined(__MS_WSL__) || defined(__CYGWIN__)
fprintf(stderr, "%s", cmd); fprintf(stderr, "%s", cmd);
if(padding) fprintf(stderr, "%s", "\n"); if(padding) fprintf(stderr, "%s", "\n");
#else #else
@ -227,7 +263,7 @@ char *get_shell_name_by_ppid(const int pid)
return name; return name;
} }
bool isZshParentShell(void) { bool is_zsh_parent_shell(void) {
pid_t parentPid=getppid(); pid_t parentPid=getppid();
char* cmdline=get_shell_name_by_ppid(parentPid); char* cmdline=get_shell_name_by_ppid(parentPid);
bool result=cmdline && strstr(cmdline, "zsh"); bool result=cmdline && strstr(cmdline, "zsh");

View file

@ -1,7 +1,7 @@
/* /*
hashset.h header file for hash set hashset.h header file for hash set
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr.h header file for HSTR shell history completion utility hstr.h header file for HSTR shell history completion utility
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_blacklist.h header file for commands to be skipped from history hstr_blacklist.h header file for commands to be skipped from history
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_curses.h header file for curses helpers hstr_curses.h header file for curses helpers
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_favorites.h header file for favorite commands hstr_favorites.h header file for favorite commands
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_history.h header file for loading and processing of BASH history hstr_history.h header file for loading and processing of BASH history
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_regexp.h header file for simplified regexp that suits HSTR needs hstr_regexp.h header file for simplified regexp that suits HSTR needs
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
hstr_utils.h header file for HSTR utilities hstr_utils.h header file for HSTR utilities
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -20,12 +20,14 @@
#define HSTR_UTILS_H #define HSTR_UTILS_H
#include <ctype.h> #include <ctype.h>
#include <fcntl.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/types.h> #include <sys/types.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
#include <termios.h>
#include <unistd.h> #include <unistd.h>
#define ENV_VAR_HOME "HOME" #define ENV_VAR_HOME "HOME"
@ -36,10 +38,51 @@
#define MIN(a,b) (((a)<(b))?(a):(b)) #define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b))
// TIOCSTI is an acronym for "Terminal Input Output Control STack Input",
// and it is a system call used in Unix-like operating systems.
// The TIOCSTI system call allows to insert data into the input buffer
// of a terminal as if it had been typed by the user.
//
// TIOCSTI is NOT available on:
// - Linux kernel >=6.2.0
// - Cygwin
// - WSL
//
// HSTR uses TIOCSTI to insert a command chosen by the user in HSTR
// to shell prompt.
//
// HSTR run:
//
// - user runs `hstr` command
// - `hstr` checks whther TIOCSTI is supported by the kernel or not
// - if SUPPORTED, then HSTR continues as it will be able to insert
// any chosen command into bash prompt
// - if NOT supported, then:
// - HSTR checks for HSTR_TIOCSTI environment variable:
// - if it is NOT defined, then it prints error and asks
// user to configure HSTR (--show-configuration >> .*rc)
// - if it is DEFINED, then:
// - if it is SET to `n`, then HSTR presumes that it has
// been configured (shell function is defined) and continues > DONE
// - OTHERWISE it prints error and ask user to configure HSTR
//
// HSTR features related to TIOCSTI
//
// - HSTR can detect whether TIOCSTI is supported by the kernel:
// hstr --is-tiocsti
// the command returns "y" or "n" (and exit code: 0 or 1)
// - HSTR checks for the following env variable if TIOCSTI is not detected
// HSTR_TIOCSTI=y or HSTR_TIOCSTI=n
//
// global TIOCSTI indicator declaration
extern bool is_tiocsti;
char* hstr_strdup(const char* s); char* hstr_strdup(const char* s);
int hstr_strlen(const char* s); int hstr_strlen(const char* s);
char* hstr_strelide(char* buffer, const char* s, unsigned maxlength); char* hstr_strelide(char* buffer, const char* s, unsigned maxlength);
void hstr_chop(char* s); void hstr_chop(char* s);
bool is_tiocsti_supported();
#ifndef __CYGWIN__ #ifndef __CYGWIN__
void tiocsti(); void tiocsti();
#endif #endif
@ -48,7 +91,7 @@ void reverse_char_pointer_array(char** array, unsigned length);
void get_hostname(int bufferSize, char* buffer); void get_hostname(int bufferSize, char* buffer);
char* get_home_file_path(char* filename); char* get_home_file_path(char* filename);
void toggle_case(char* str, bool lowercase); void toggle_case(char* str, bool lowercase);
bool isZshParentShell(void); bool is_zsh_parent_shell(void);
char* zsh_unmetafy(char* s, int* len); char* zsh_unmetafy(char* s, int* len);
#endif #endif

View file

@ -1,7 +1,7 @@
/* /*
radixsort.h header file for radix sort implementation radixsort.h header file for radix sort implementation
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
main.c HSTR shell history completion utility main main.c HSTR shell history completion utility main
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
radixsort.c radix sort radixsort.c radix sort
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
# hstr-unit-tests.pro Qt project file of UNIT tests for HSTR # hstr-unit-tests.pro Qt project file of UNIT tests for HSTR
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
test.c UNIT tests main for HSTR shell history completion utility test.c UNIT tests main for HSTR shell history completion utility
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
test_*.c HSTR test test_*.c HSTR test
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
test_*.c HSTR test test_*.c HSTR test
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
test_*.c HSTR test test_*.c HSTR test
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,7 +1,7 @@
/* /*
test_*.c HSTR test test_*.c HSTR test
Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (C) 2014-2022 Martin Dvorak <martin.dvorak@mindforger.com> # Copyright (C) 2014-2023 Martin Dvorak <martin.dvorak@mindforger.com>
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.