mirror of
https://github.com/mintty/wsltty.git
synced 2025-11-07 18:41:56 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
975dbb9398 | ||
|
|
432b71d2fd | ||
|
|
1b41dfa1e0 | ||
|
|
336db2f19b | ||
|
|
1f67e41333 | ||
|
|
0520b71e1f | ||
|
|
92b982690e | ||
|
|
f0a3449ada | ||
|
|
3d4055a63b | ||
|
|
2fb994604a |
@@ -33,3 +33,7 @@ The colour schemes / theme files bundled with mintty are included
|
|||||||
under various licenses. The source and license or permission are
|
under various licenses. The source and license or permission are
|
||||||
quoted in the respective theme files.
|
quoted in the respective theme files.
|
||||||
|
|
||||||
|
Bell sounds files are included, mostly under the creative commons license
|
||||||
|
(https://creativecommons.org/publicdomain/zero/1.0/), see also the README
|
||||||
|
in the sounds subdirectory.
|
||||||
|
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -99,6 +99,12 @@ One Desktop shortcut is installed:
|
|||||||
Other, distribution-specific shortcuts can be copied to the desktop
|
Other, distribution-specific shortcuts can be copied to the desktop
|
||||||
from the Start Menu if desired.
|
from the Start Menu if desired.
|
||||||
|
|
||||||
|
The Start menu folder WSLtty contains the link
|
||||||
|
<img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`configure WSL shortcuts`.
|
||||||
|
This function is initially run when wsltty is installed.
|
||||||
|
If should be rerun after adding or removing WSL distributions,
|
||||||
|
in order to create the respective set of shortcuts in the Start menu.
|
||||||
|
|
||||||
#### Command line scripts `wsl*.bat` ####
|
#### Command line scripts `wsl*.bat` ####
|
||||||
|
|
||||||
WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps`
|
WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps`
|
||||||
@@ -117,9 +123,16 @@ WSLtty provides context menu entries for all installed WSL distributions
|
|||||||
and one for the configured default distribution,
|
and one for the configured default distribution,
|
||||||
to start a respective WSL terminal in a specific folder from an Explorer window.
|
to start a respective WSL terminal in a specific folder from an Explorer window.
|
||||||
They are not installed by default.
|
They are not installed by default.
|
||||||
|
|
||||||
To add launch entries for the default or all WSL distributions to the
|
To add launch entries for the default or all WSL distributions to the
|
||||||
Explorer context menu, or remove them, run the respective script from the
|
Explorer context menu, or remove them, run the respective script from the
|
||||||
Start Menu subfolder `WSLtty`.
|
Start Menu subfolder `WSLtty`:
|
||||||
|
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`add default to context menu`
|
||||||
|
adds context menu entries for the default WSL distribution
|
||||||
|
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`add to context menu`
|
||||||
|
adds context menu entries for all WSL distributions
|
||||||
|
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`remove from context menu`
|
||||||
|
removes context menu entries for WSL distributions
|
||||||
|
|
||||||
#### Icon ####
|
#### Icon ####
|
||||||
|
|
||||||
|
|||||||
@@ -104,14 +104,8 @@ fi
|
|||||||
lxss="/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss"
|
lxss="/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss"
|
||||||
schema="/HKEY_CURRENT_USER/Software/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/SystemAppData"
|
schema="/HKEY_CURRENT_USER/Software/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/SystemAppData"
|
||||||
|
|
||||||
#(regtool list "$lxss" 2>/dev/null && echo || echo "No WSL packages registered" >&2) |
|
config () {
|
||||||
(
|
guid="$1"
|
||||||
if $alldistros
|
|
||||||
then regtool list "$lxss" 2>/dev/null
|
|
||||||
else true
|
|
||||||
fi && echo || echo "No WSL packages registered" >&2) |
|
|
||||||
while read guid
|
|
||||||
do
|
|
||||||
ok=false
|
ok=false
|
||||||
case $guid in
|
case $guid in
|
||||||
{*)
|
{*)
|
||||||
@@ -151,7 +145,7 @@ do
|
|||||||
bridgeargs='--distro-guid "'"$guid"'" -t'
|
bridgeargs='--distro-guid "'"$guid"'" -t'
|
||||||
|
|
||||||
ok=true;;
|
ok=true;;
|
||||||
"") # WSL default installation
|
DefaultDistribution|"") # WSL default installation
|
||||||
distro=
|
distro=
|
||||||
name=WSL
|
name=WSL
|
||||||
icon="$installdir"'\wsl.ico'
|
icon="$installdir"'\wsl.ico'
|
||||||
@@ -169,6 +163,13 @@ do
|
|||||||
target="$installdir"'\bin\mintty.exe'
|
target="$installdir"'\bin\mintty.exe'
|
||||||
bridgeargs=" " # deprecated
|
bridgeargs=" " # deprecated
|
||||||
|
|
||||||
|
if $ok && [ -n "$distro" ]
|
||||||
|
then # fix #163: backend missing +x with certain mount options
|
||||||
|
echo Setting +x wslbridge-backend for distro "'$distro'"
|
||||||
|
(cd "$LOCALAPPDATA/wsltty/bin"; wsl.exe -d "$distro" chmod +x wslbridge-backend)
|
||||||
|
# (cd "$LOCALAPPDATA/wsltty/bin"; "$SYSTEMROOT/System32/bash.exe" "$guid" -c chmod +x wslbridge-backend)
|
||||||
|
fi
|
||||||
|
|
||||||
if $ok && $config
|
if $ok && $config
|
||||||
then
|
then
|
||||||
export name target minttyargs bridgeargs icon
|
export name target minttyargs bridgeargs icon
|
||||||
@@ -218,7 +219,14 @@ do
|
|||||||
|
|
||||||
# default desktop shortcut in ~ -> Desktop
|
# default desktop shortcut in ~ -> Desktop
|
||||||
if [ "$name" = "WSL" ]
|
if [ "$name" = "WSL" ]
|
||||||
then cmd /C copy "$name Terminal.lnk" "%USERPROFILE%\\Desktop"
|
then
|
||||||
|
#cmd /C copy "$name Terminal.lnk" "%USERPROFILE%\\Desktop"
|
||||||
|
#cmd /C copy "$name Terminal.lnk" "%APPDATA%\\..\\Desktop\\"
|
||||||
|
# the above does not work reliably (see #166)
|
||||||
|
# determine actual Desktop folder
|
||||||
|
desktopkey='\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop'
|
||||||
|
desktop=`regtool get "$desktopkey"`
|
||||||
|
cmd /C copy "$name Terminal.lnk" "$desktop\\"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# launch script in ~ -> WSLtty home, WindowsApps launch folder
|
# launch script in ~ -> WSLtty home, WindowsApps launch folder
|
||||||
@@ -229,4 +237,18 @@ do
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ensure proper parameter passing to cmd /C
|
||||||
|
chcp.com 65001 # just in case; seems to work without as well
|
||||||
|
|
||||||
|
# configure for all distros, plus default distro
|
||||||
|
for guid in `
|
||||||
|
if $alldistros
|
||||||
|
then regtool list "$lxss" 2>/dev/null
|
||||||
|
else echo DefaultDistribution
|
||||||
|
fi || echo "No WSL packages registered" >&2
|
||||||
|
`
|
||||||
|
do config $guid
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ mkdir "%installdir%\usr\share\mintty\lang"
|
|||||||
copy lang.zoo "%installdir%\usr\share\mintty\lang"
|
copy lang.zoo "%installdir%\usr\share\mintty\lang"
|
||||||
mkdir "%installdir%\usr\share\mintty\themes"
|
mkdir "%installdir%\usr\share\mintty\themes"
|
||||||
copy themes.zoo "%installdir%\usr\share\mintty\themes"
|
copy themes.zoo "%installdir%\usr\share\mintty\themes"
|
||||||
|
mkdir "%installdir%\usr\share\mintty\sounds"
|
||||||
|
copy sounds.zoo "%installdir%\usr\share\mintty\sounds"
|
||||||
mkdir "%installdir%\usr\share\mintty\info"
|
mkdir "%installdir%\usr\share\mintty\info"
|
||||||
copy charnames.txt "%installdir%\usr\share\mintty\info"
|
copy charnames.txt "%installdir%\usr\share\mintty\info"
|
||||||
mkdir "%installdir%\usr\share\mintty\icon"
|
mkdir "%installdir%\usr\share\mintty\icon"
|
||||||
@@ -89,6 +91,8 @@ cd /D "%installdir%\usr\share\mintty\lang"
|
|||||||
"%installdir%\bin\zoo" xO lang
|
"%installdir%\bin\zoo" xO lang
|
||||||
cd /D "%installdir%\usr\share\mintty\themes"
|
cd /D "%installdir%\usr\share\mintty\themes"
|
||||||
"%installdir%\bin\zoo" xO themes
|
"%installdir%\bin\zoo" xO themes
|
||||||
|
cd /D "%installdir%\usr\share\mintty\sounds"
|
||||||
|
"%installdir%\bin\zoo" xO sounds
|
||||||
|
|
||||||
|
|
||||||
:migrate configuration
|
:migrate configuration
|
||||||
@@ -111,8 +115,8 @@ rmdir "%oldroot%\home"
|
|||||||
|
|
||||||
rem create user config directory and subfolders
|
rem create user config directory and subfolders
|
||||||
mkdir "%configdir%\lang"
|
mkdir "%configdir%\lang"
|
||||||
mkdir "%configdir%\sounds"
|
|
||||||
mkdir "%configdir%\themes"
|
mkdir "%configdir%\themes"
|
||||||
|
mkdir "%configdir%\sounds"
|
||||||
|
|
||||||
rem create config file if it does not yet exist
|
rem create config file if it does not yet exist
|
||||||
if not exist "%configdir%\config" echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config"
|
if not exist "%configdir%\config" echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config"
|
||||||
|
|||||||
24
makefile
24
makefile
@@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
|
|
||||||
# wsltty release
|
# wsltty release
|
||||||
ver=1.9.8
|
ver=3.0.1.2
|
||||||
|
|
||||||
# wsltty appx release - must have 4 parts!
|
# wsltty appx release - must have 4 parts!
|
||||||
verx=1.9.8.0
|
verx=3.0.1.2
|
||||||
|
|
||||||
# Windows SDK version for appx
|
# Windows SDK version for appx
|
||||||
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack
|
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack
|
||||||
@@ -19,7 +19,7 @@ WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
|
|||||||
|
|
||||||
##############################
|
##############################
|
||||||
# mintty release version
|
# mintty release version
|
||||||
minttyver=2.9.8
|
minttyver=3.0.1
|
||||||
|
|
||||||
# or mintty branch or commit version
|
# or mintty branch or commit version
|
||||||
#minttyver=master
|
#minttyver=master
|
||||||
@@ -121,18 +121,26 @@ wslbridge-package:
|
|||||||
|
|
||||||
wslbridge-source: wslbridge-$(wslbridge-commit).zip
|
wslbridge-source: wslbridge-$(wslbridge-commit).zip
|
||||||
unzip -o wslbridge-$(wslbridge-commit).zip
|
unzip -o wslbridge-$(wslbridge-commit).zip
|
||||||
|
#cd wslbridge-$(wslbridge-commit)/backend; patch -T -p1 < ../../wslbridge-backend-static.patch
|
||||||
tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge
|
tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge
|
||||||
|
|
||||||
wslbridge-$(wslbridge-commit).zip:
|
wslbridge-$(wslbridge-commit).zip:
|
||||||
$(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip
|
$(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip
|
||||||
|
|
||||||
wslbridge-frontend: wslbridge-source
|
wslbridge-frontend: wslbridge-source
|
||||||
|
echo ------------- Compiling wslbridge frontend
|
||||||
cd wslbridge-$(wslbridge-commit)/frontend; make
|
cd wslbridge-$(wslbridge-commit)/frontend; make
|
||||||
strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe
|
strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/
|
cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/
|
||||||
|
|
||||||
wslbridge-backend: wslbridge-source
|
#wslbridge-backend: wslbridge-source
|
||||||
|
# tweak dependency to support build testing on non-Windows 10:
|
||||||
|
backend-bin=wslbridge-$(wslbridge-commit)/out/wslbridge-backend
|
||||||
|
backend-src=wslbridge-$(wslbridge-commit)/backend/wslbridge-backend.cc
|
||||||
|
wslbridge-backend: $(backend-bin) wslbridge-source
|
||||||
|
$(backend-bin): $(backend-src)
|
||||||
|
echo ------------- Compiling wslbridge backend
|
||||||
cd wslbridge-$(wslbridge-commit)/backend; if uname -m | grep x86_64; then cmd /C wsl make; else wslbridge make; fi
|
cd wslbridge-$(wslbridge-commit)/backend; if uname -m | grep x86_64; then cmd /C wsl make; else wslbridge make; fi
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
cp wslbridge-$(wslbridge-commit)/out/wslbridge-backend bin/
|
cp wslbridge-$(wslbridge-commit)/out/wslbridge-backend bin/
|
||||||
@@ -154,6 +162,7 @@ mintty-build:
|
|||||||
cd mintty-$(minttyver)/src; make $(wslbuild) $(wslversion)
|
cd mintty-$(minttyver)/src; make $(wslbuild) $(wslversion)
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
cp mintty-$(minttyver)/bin/mintty.exe bin/
|
cp mintty-$(minttyver)/bin/mintty.exe bin/
|
||||||
|
strip bin/mintty.exe
|
||||||
|
|
||||||
mintty-build-appx:
|
mintty-build-appx:
|
||||||
# ensure rebuild of version-specific check and message
|
# ensure rebuild of version-specific check and message
|
||||||
@@ -162,20 +171,24 @@ mintty-build-appx:
|
|||||||
cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion)
|
cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion)
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
cp mintty-$(minttyver)/bin/mintty.exe bin/
|
cp mintty-$(minttyver)/bin/mintty.exe bin/
|
||||||
|
strip bin/mintty.exe
|
||||||
|
|
||||||
mintty-pkg:
|
mintty-pkg:
|
||||||
cp mintty-$(minttyver)/LICENSE LICENSE.mintty
|
cp mintty-$(minttyver)/LICENSE LICENSE.mintty
|
||||||
cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../
|
cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../
|
||||||
cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.zoo ../../
|
cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.zoo ../../
|
||||||
|
cd mintty-$(minttyver)/sounds; zoo a sounds *.wav *.WAV *.md; mv sounds.zoo ../../
|
||||||
# add charnames.txt to support "Character Info"
|
# add charnames.txt to support "Character Info"
|
||||||
cd mintty-$(minttyver)/src; sh ./mknames
|
cd mintty-$(minttyver)/src; sh ./mknames
|
||||||
cp mintty-$(minttyver)/src/charnames.txt .
|
cp mintty-$(minttyver)/src/charnames.txt .
|
||||||
|
|
||||||
mintty-appx:
|
mintty-appx:
|
||||||
mkdir -p usr/share/mintty
|
mkdir -p usr/share/mintty
|
||||||
cd usr/share/mintty; mkdir -p lang themes info
|
cd usr/share/mintty; mkdir -p lang themes sounds info
|
||||||
cp mintty-$(minttyver)/lang/*.po usr/share/mintty/lang/
|
cp mintty-$(minttyver)/lang/*.po usr/share/mintty/lang/
|
||||||
cp mintty-$(minttyver)/themes/*[!~] usr/share/mintty/themes/
|
cp mintty-$(minttyver)/themes/*[!~] usr/share/mintty/themes/
|
||||||
|
cp mintty-$(minttyver)/sounds/*.wav usr/share/mintty/sounds/
|
||||||
|
cp mintty-$(minttyver)/sounds/*.WAV usr/share/mintty/sounds/
|
||||||
# add charnames.txt to support "Character Info"
|
# add charnames.txt to support "Character Info"
|
||||||
cd mintty-$(minttyver)/src; sh ./mknames
|
cd mintty-$(minttyver)/src; sh ./mknames
|
||||||
cp mintty-$(minttyver)/src/charnames.txt usr/share/mintty/info/
|
cp mintty-$(minttyver)/src/charnames.txt usr/share/mintty/info/
|
||||||
@@ -205,6 +218,7 @@ cop: ver
|
|||||||
cp bin/zoo.exe rel/
|
cp bin/zoo.exe rel/
|
||||||
cp lang.zoo rel/
|
cp lang.zoo rel/
|
||||||
cp themes.zoo rel/
|
cp themes.zoo rel/
|
||||||
|
cp sounds.zoo rel/
|
||||||
cp charnames.txt rel/
|
cp charnames.txt rel/
|
||||||
cp bin/wslbridge.exe rel/
|
cp bin/wslbridge.exe rel/
|
||||||
cp bin/wslbridge-backend rel/
|
cp bin/wslbridge-backend rel/
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ SourceFiles=SourceFiles
|
|||||||
[Strings]
|
[Strings]
|
||||||
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
|
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
|
||||||
DisplayLicense=
|
DisplayLicense=
|
||||||
FinishMessage=Mintty for WSL installed - for documentation see https://github.com/mintty/wsltty
|
FinishMessage=Mintty for WSL installed - for documentation and configuration see https://github.com/mintty/wsltty
|
||||||
TargetName=wsltty-%version%-install.exe
|
TargetName=wsltty-%version%-install.exe
|
||||||
FriendlyName=wsltty
|
FriendlyName=wsltty
|
||||||
AppLaunched=cmd.exe /c install.bat
|
AppLaunched=cmd.exe /c install.bat
|
||||||
@@ -55,8 +55,9 @@ FILE19="wsltty home & help.url"
|
|||||||
FILE20="zoo.exe"
|
FILE20="zoo.exe"
|
||||||
FILE21="lang.zoo"
|
FILE21="lang.zoo"
|
||||||
FILE22="themes.zoo"
|
FILE22="themes.zoo"
|
||||||
FILE23="mkshortcut.vbs"
|
FILE23="sounds.zoo"
|
||||||
FILE24="mintty.ico"
|
FILE24="mkshortcut.vbs"
|
||||||
|
FILE25="mintty.ico"
|
||||||
|
|
||||||
[SourceFiles]
|
[SourceFiles]
|
||||||
SourceFiles0=.
|
SourceFiles0=.
|
||||||
@@ -87,4 +88,5 @@ SourceFiles0=.
|
|||||||
%FILE22%=
|
%FILE22%=
|
||||||
%FILE23%=
|
%FILE23%=
|
||||||
%FILE24%=
|
%FILE24%=
|
||||||
|
%FILE25%=
|
||||||
|
|
||||||
|
|||||||
61
wslbridge-backend-static.patch
Normal file
61
wslbridge-backend-static.patch
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
diff -rup orig/Makefile new/Makefile
|
||||||
|
--- orig/Makefile 2018-05-06 01:12:36.000000000 +0200
|
||||||
|
+++ new/Makefile 2019-05-01 08:16:53.647051200 +0200
|
||||||
|
@@ -5,7 +5,7 @@ all : ../out/wslbridge-backend
|
||||||
|
../out/wslbridge-backend : wslbridge-backend.cc ../common/SocketIo.cc ../common/SocketIo.h ../VERSION.txt Makefile
|
||||||
|
mkdir -p ../out
|
||||||
|
$(CXX) -std=c++11 -fno-exceptions \
|
||||||
|
- -static-libgcc -static-libstdc++ \
|
||||||
|
+ -static -static-libgcc -static-libstdc++ \
|
||||||
|
-D_GNU_SOURCE \
|
||||||
|
-DWSLBRIDGE_VERSION=$(shell cat ../VERSION.txt) \
|
||||||
|
-Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread
|
||||||
|
diff -rup orig/wslbridge-backend.cc new/wslbridge-backend.cc
|
||||||
|
--- orig/wslbridge-backend.cc 2018-05-06 01:12:36.000000000 +0200
|
||||||
|
+++ new/wslbridge-backend.cc 2019-05-01 08:19:12.799688500 +0200
|
||||||
|
@@ -494,6 +494,45 @@ static void frontendVersionCheck(const c
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
+#define getpwuid _getpwuid
|
||||||
|
+
|
||||||
|
+struct passwd * getpwuid(int uid)
|
||||||
|
+{
|
||||||
|
+ FILE * pwd = fopen("/etc/passwd", "r");
|
||||||
|
+ if (pwd) {
|
||||||
|
+ char pwbuf[222];
|
||||||
|
+ static struct passwd pw;
|
||||||
|
+ pw.pw_shell = 0;
|
||||||
|
+ while (fgets(pwbuf, sizeof pwbuf, pwd)) {
|
||||||
|
+ char * sep = strchr(pwbuf, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ sep = strchr(++sep, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ int pwuid;
|
||||||
|
+ if (sscanf(sep, ":%d:", &pwuid) == 1 && pwuid == uid) {
|
||||||
|
+ // pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
|
||||||
|
+ // ^
|
||||||
|
+ sep = strchr(++sep, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ sep = strchr(++sep, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ sep = strchr(++sep, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ sep = strchr(++sep, ':');
|
||||||
|
+ if (!sep) continue;
|
||||||
|
+ pw.pw_shell = ++sep;
|
||||||
|
+ sep = strchr(++sep, '\n');
|
||||||
|
+ if (sep)
|
||||||
|
+ *sep = 0;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ fclose(pwd);
|
||||||
|
+ return &pw;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
// If the backend crashes, it prints a message to its stderr, which is a
|
||||||
Reference in New Issue
Block a user