| #!/bin/sh |
| # Prints the user's email address, with confirmation from the user. |
| # |
| # Copyright (C) 2001-2003, 2005 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 <http://www.gnu.org/licenses/>. |
| |
| # Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale. |
| prefix="/Users/lfy/curr-darwin-aarch64-qemu-deps2/install-darwin-aarch64" |
| 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" |