Spaces:
Running
Running
# Prints the user's email address, with confirmation from the user. | |
# | |
# Copyright (C) 2001-2003, 2005, 2013 Free Software Foundation, Inc. | |
# | |
# This program is free software: you can redistribute it and/or modify | |
# it under the terms of the GNU General Public License as published by | |
# the Free Software Foundation; either version 3 of the License, or | |
# (at your option) any later version. | |
# | |
# This program is distributed in the hope that it will be useful, | |
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
# GNU General Public License for more details. | |
# | |
# You should have received a copy of the GNU General Public License | |
# along with this program. If not, see <https://www.gnu.org/licenses/>. | |
# Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale. | |
prefix="/home/simon/prog/text-generation-webui/installer_files/env" | |
exec_prefix="${prefix}" | |
datarootdir="${prefix}/share" | |
datadir="${datarootdir}" | |
# Set variables libdir, localedir. | |
libdir="${exec_prefix}/lib" | |
localedir="${datarootdir}/locale" | |
# Support for relocatability. | |
if test "no" = yes; then | |
orig_installdir="$libdir"/gettext # see Makefile.am's install rule | |
# Determine curr_installdir without caring for symlinked callers. | |
curr_installdir=`echo "$0" | sed -e 's,/[^/]*$,,'` | |
curr_installdir=`cd "$curr_installdir" && pwd` | |
# Compute the original/current installation prefixes by stripping the | |
# trailing directories off the original/current installation directories. | |
while true; do | |
orig_last=`echo "$orig_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'` | |
curr_last=`echo "$curr_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'` | |
if test -z "$orig_last" || test -z "$curr_last"; then | |
break | |
fi | |
if test "$orig_last" != "$curr_last"; then | |
break | |
fi | |
orig_installdir=`echo "$orig_installdir" | sed -e 's,/[^/]*$,,'` | |
curr_installdir=`echo "$curr_installdir" | sed -e 's,/[^/]*$,,'` | |
done | |
# Now relocate the directory variables that we use. | |
libdir=`echo "$libdir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'` | |
localedir=`echo "$localedir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'` | |
fi | |
# Internationalization. | |
. gettext.sh | |
TEXTDOMAIN=gettext-tools | |
export TEXTDOMAIN | |
TEXTDOMAINDIR="$localedir" | |
export TEXTDOMAINDIR | |
# Redirect fileno 3 to interactive I/O. | |
exec 3>/dev/tty | |
# Output a prompt. | |
if test $# != 0; then | |
echo "$1" 1>&3 | |
fi | |
# Find the user name on the local machine. | |
user=`id -u -n 2>/dev/null` | |
if test -z "$user"; then | |
user="$USER" | |
if test -z "$user"; then | |
user="$LOGNAME" | |
if test -z "$user"; then | |
user=unknown | |
fi | |
fi | |
fi | |
# Find the hostname. | |
# hostname on some systems (SVR3.2, old Linux) returns a bogus exit status, | |
# so uname gets run too, so we keep only the first line of output. | |
#host=`(hostname || uname -n) 2>/dev/null | sed 1q` | |
host=`"$libdir"/gettext/hostname --short 2>/dev/null | sed 1q` | |
# Find the hostname. | |
hostfqdn=`"$libdir"/gettext/hostname --fqdn 2>/dev/null | sed 1q` | |
# Find a list of email addresses from various mailer configuration files. | |
# All mailers use configuration files under $HOME. We handle them in a | |
# last-modified - first-priority order. | |
cd $HOME | |
files="" | |
# ----------------------- BEGIN MAILER SPECIFIC CODE ----------------------- | |
# Mozilla Thunderbird addresses | |
files="$files .thunderbird/*/prefs.js" | |
# Mozilla addresses | |
files="$files .mozilla/*/prefs.js" | |
# Netscape 4 addresses | |
files="$files .netscape/liprefs.js .netscape/preferences.js" | |
# Netscape 3 addresses | |
files="$files .netscape/preferences" | |
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses | |
# XEmacs mew addresses | |
files="$files .emacs .emacs.el" | |
# KDE2 addresses | |
files="$files .kde2/share/config/emaildefaults" | |
# KDE kmail addresses | |
files="$files .kde2/share/config/kmailrc" | |
# GNOME evolution 2 addresses | |
files="$files .gconf/apps/evolution/mail/%gconf.xml" | |
# GNOME evolution 1 addresses | |
files="$files evolution/config.xmldb" | |
# GNOME balsa addresses | |
files="$files .gnome/balsa" | |
# StarOffice and OpenOffice addresses | |
sed_dos2unix='s/\r$//' | |
sed_soffice51='s,StarOffice 5\.1=\(.*\)$,\1/sofficerc,p' | |
sed_soffice52='s,StarOffice 5\.2=\(.*\)$,\1/user/sofficerc,p' | |
sed_ooffice='s,^OpenOffice[^=]*=\(.*\)$,\1/user/config/registry/instance/org/openoffice/UserProfile.xml,p' | |
files="$files Office51/sofficerc Office52/user/sofficerc "`sed -n -e "$sed_dos2unix" -e "$sed_soffice51" -e "$sed_soffice52" -e "$sed_ooffice" .sversionrc 2>/dev/null | sed -e 's,^file://*,/,'` | |
# mutt addresses | |
files="$files .muttrc" | |
# pine addresses | |
files="$files .pinerc" | |
# xfmail addresses | |
files="$files .xfmail/.xfmailrc" | |
# tkrat addresses | |
files="$files .ratatosk/ratatoskrc" | |
# ----------------------- END MAILER SPECIFIC CODE ----------------------- | |
# Expand wildcards and remove nonexistent files from the list. | |
nfiles="" | |
for file in $files; do | |
if test -r "$file" && test ! -d "$file"; then | |
nfiles="$nfiles $file" | |
fi | |
done | |
files="$nfiles" | |
addresses="" | |
if test -n "$files"; then | |
for file in `ls -t $files`; do | |
case "$file" in | |
# ----------------------- BEGIN MAILER SPECIFIC CODE ----------------------- | |
# Mozilla and Mozilla Thunderbird addresses | |
.mozilla/*/prefs.js | .thunderbird/*/prefs.js) | |
addresses="$addresses "`grep -h '^user_pref("mail\.identity\..*\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\..*\.useremail", "\(.*\)");$/\1/'` | |
;; | |
# Netscape 4 addresses | |
.netscape/liprefs.js | .netscape/preferences.js) | |
addresses="$addresses "`grep -h '^user_pref("mail\.identity\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\.useremail", "\(.*\)");$/\1/'` | |
;; | |
# Netscape 3 addresses | |
.netscape/preferences) | |
addresses="$addresses "`grep -h '^EMAIL_ADDRESS:' $file 2>/dev/null | sed -e 's/^EMAIL_ADDRESS:[ ]*//'` | |
;; | |
.emacs | .emacs.el) | |
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses | |
addresses="$addresses "`grep -h '[ (]user-mail-address "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]user-mail-address "\([^"]*\)".*$/\1/'` | |
# XEmacs mew addresses | |
domains=`grep -h '[ (]mew-mail-domain "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]mew-mail-domain "\([^"]*\)".*$/\1/'` | |
if test -n "$domains"; then | |
for domain in $domains; do | |
addresses="$addresses ${user}@$domain" | |
done | |
fi | |
;; | |
# KDE2 addresses | |
.kde2/share/config/emaildefaults) | |
addresses="$addresses "`grep -h '^EmailAddress=' $file 2>/dev/null | sed -e 's/^EmailAddress=//'` | |
;; | |
# KDE kmail addresses | |
.kde2/share/config/kmailrc) | |
addresses="$addresses "`grep -h '^Email Address=' $file 2>/dev/null | sed -e 's/^Email Address=//'` | |
;; | |
# GNOME evolution 2 addresses | |
.gconf/apps/evolution/mail/%gconf.xml) | |
sedexpr0='s,^.*<addr-spec>\(.*\)</addr-spec>.*$,\1,p' | |
addresses="$addresses "`sed -n -e "$sedexpr0" < $file` | |
;; | |
# GNOME evolution 1 addresses | |
evolution/config.xmldb) | |
sedexpr0='s/^.*<entry name="identity_address_[0-9]*" type="string" value="\([^"]*\)".*$/\1/p' | |
sedexpr1='s/\(..\)/\\x\1/g' | |
sedexpr2='s,$,\\n,' | |
addresses="$addresses "`sed -n -e "$sedexpr0" < $file | while read hexstring; do printf \`echo "$hexstring" | sed -e "$sedexpr1" -e "$sedexpr2"\`; done` | |
;; | |
# GNOME balsa addresses | |
.gnome/balsa) | |
addresses="$addresses "`grep -h '^Address=' $file 2>/dev/null | sed -e 's/^Address=//'` | |
;; | |
# OpenOffice addresses | |
*/UserProfile.xml) | |
addresses="$addresses "`sed -n -e 's,^.*<mail cfg:type="string">\(.*\)</mail>.*$,\1,p' $file 2>/dev/null` | |
;; | |
# StarOffice addresses | |
# Not a typo. They really write "Adress" with a single d. | |
# German orthography... | |
*/sofficerc) | |
addresses="$addresses "`grep -h '^User-Adress=' $file 2>/dev/null | sed -e 's/#[^#]*$//' -e 's/^.*#//'` | |
;; | |
# mutt addresses | |
.muttrc) | |
mutt_addresses=`grep -h '^set from="[^"]*"[ ]*$' $file 2>/dev/null | sed -e 's/^set from="\([^"]*\)"[ ]*$/\1/'` | |
if test -n "$mutt_addresses"; then | |
addresses="$addresses $mutt_addresses" | |
else | |
# mutt uses $EMAIL as fallback. | |
if test -n "$EMAIL"; then | |
addresses="$addresses $EMAIL" | |
fi | |
fi | |
;; | |
# pine addresses | |
.pinerc) | |
domains=`grep -h '^user-domain=' $file 2>/dev/null | sed -e 's/^user-domain=//'` | |
if test -n "$domains"; then | |
for domain in $domains; do | |
addresses="$addresses ${user}@$domain" | |
done | |
else | |
# The use-only-domain-name option is only used if the user-domain option is not present. | |
domains=`grep -h '^use-only-domain-name=' $file 2>/dev/null | sed -e 's/^use-only-domain-name=//'` | |
if test "Yes" = "$domains"; then | |
addresses="$addresses ${user}@"`echo "$hostfqdn" | sed -e 's/^[^.]*\.//'` | |
fi | |
fi | |
;; | |
# xfmail addresses | |
.xfmail/.xfmailrc) | |
addresses="$addresses "`grep -h '^from=.*<.*>' $file 2>/dev/null | sed -e 's/^.*<\([^<>]*\)>.*$/\1/'` | |
;; | |
# tkrat addresses | |
.ratatosk/ratatoskrc) | |
domains=`grep -h '^set option(masquerade_as) ' $file 2>/dev/null | sed -e 's/^set option(masquerade_as) //'` | |
if test -n "$domains"; then | |
for domain in $domains; do | |
addresses="$addresses ${user}@$domain" | |
done | |
else | |
# The domain option is used only if the masquerade_as option is not present. | |
domains=`grep -h '^set option(domain) ' $file 2>/dev/null | sed -e 's/^set option(domain) //'` | |
if test -n "$domains"; then | |
for domain in $domains; do | |
addresses="$addresses ${user}@${host}.$domain" | |
done | |
fi | |
fi | |
;; | |
# ----------------------- END MAILER SPECIFIC CODE ----------------------- | |
esac | |
done | |
fi | |
# Some Debian systems have a file /etc/mailname. | |
if test -r /etc/mailname; then | |
hostmailname=`cat /etc/mailname` | |
if test -n "$hostmailname"; then | |
addresses="$addresses ${user}@$hostmailname" | |
fi | |
fi | |
# SuSE Linux >= 8.0 systems have a file /etc/sysconfig/mail. | |
if test -r /etc/sysconfig/mail; then | |
hostmailname=`. /etc/sysconfig/mail && echo "$FROM_HEADER"` | |
if test -n "$hostmailname"; then | |
addresses="$addresses ${user}@$hostmailname" | |
fi | |
fi | |
# elm has no user-defined addresses. | |
# mailx has no user-defined addresses. | |
# mh has no user-defined addresses. | |
# They use the system default. | |
addresses="$addresses ${user}@$hostfqdn" | |
# Normalize addresses: remove addresses without @, lowercase the part after @, | |
# and remove duplicates. | |
lowercase_sed='{ | |
h | |
s/^[^@]*@\(.*\)$/\1/ | |
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ | |
x | |
s/^\([^@]*\)@.*/\1@/ | |
G | |
s/\n// | |
p | |
}' | |
naddresses="" | |
for addr in $addresses; do | |
case "$addr" in | |
"<"*">") addr=`echo "$addr" | sed -e 's/^<//' -e 's/>$//'` ;; | |
esac | |
case "$addr" in | |
*@*) | |
addr=`echo "$addr" | sed -n -e "$lowercase_sed"` | |
case " $naddresses " in | |
*" $addr "*) ;; | |
*) naddresses="$naddresses $addr" ;; | |
esac | |
;; | |
esac | |
done | |
addresses="$naddresses" | |
# Now it's time to ask the user. | |
case "$addresses" in | |
" "*" "*) | |
# At least two addresses. | |
lines="" | |
i=0 | |
for addr in $addresses; do | |
i=`expr $i + 1` | |
lines="${lines}${i} ${addr} | |
" | |
done | |
while true; do | |
{ gettext "Which is your email address?"; echo; } 1>&3 | |
echo "$lines" 1>&3 | |
{ gettext "Please choose the number, or enter your email address."; echo; } 1>&3 | |
read answer < /dev/tty | |
case "$answer" in | |
*@*) ;; | |
[0-9]*) | |
i=0 | |
for addr in $addresses; do | |
i=`expr $i + 1` | |
if test "$i" = "$answer"; then | |
break 2 | |
fi | |
done | |
;; | |
esac | |
case "$answer" in | |
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
esac | |
case "$answer" in | |
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
*@*.*) ;; | |
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
esac | |
addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
break | |
done | |
;; | |
" "*) | |
# One address. | |
while true; do | |
{ gettext "Is the following your email address?"; echo; } 1>&3 | |
echo " $addresses" 1>&3 | |
{ gettext "Please confirm by pressing Return, or enter your email address."; echo; } 1>&3 | |
read answer < /dev/tty | |
if test -z "$answer"; then | |
addr=`echo "$addresses" | sed -e 's/^ //'` | |
break | |
fi | |
case "$answer" in | |
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
esac | |
case "$answer" in | |
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
*@*.*) ;; | |
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
esac | |
addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
break | |
done | |
;; | |
"") | |
# No address. | |
{ gettext "Couldn't find out about your email address."; echo; } 1>&3 | |
while true; do | |
{ gettext "Please enter your email address."; echo; } 1>&3 | |
read answer < /dev/tty | |
case "$answer" in | |
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
esac | |
case "$answer" in | |
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
*@*.*) ;; | |
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
esac | |
addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
break | |
done | |
;; | |
*) echo "internal error" 1>&3 ; exit 1 ;; | |
esac | |
# Print to standard output. | |
echo "$addr" | |