Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/gettext/user-email @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 68:5028fdace37b |
---|---|
1 #!/bin/sh | |
2 # Prints the user's email address, with confirmation from the user. | |
3 # | |
4 # Copyright (C) 2001-2003, 2005, 2013 Free Software Foundation, Inc. | |
5 # | |
6 # This program is free software: you can redistribute it and/or modify | |
7 # it under the terms of the GNU General Public License as published by | |
8 # the Free Software Foundation; either version 3 of the License, or | |
9 # (at your option) any later version. | |
10 # | |
11 # This program is distributed in the hope that it will be useful, | |
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 # GNU General Public License for more details. | |
15 # | |
16 # You should have received a copy of the GNU General Public License | |
17 # along with this program. If not, see <https://www.gnu.org/licenses/>. | |
18 | |
19 # Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale. | |
20 prefix="/mnt/c/Users/crash/Documents/BobLiterman/CSP2_Galaxy/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce" | |
21 exec_prefix="${prefix}" | |
22 datarootdir="${prefix}/share" | |
23 datadir="${datarootdir}" | |
24 # Set variables libdir, localedir. | |
25 libdir="${exec_prefix}/lib" | |
26 localedir="${datarootdir}/locale" | |
27 | |
28 # Support for relocatability. | |
29 if test "no" = yes; then | |
30 orig_installdir="$libdir"/gettext # see Makefile.am's install rule | |
31 # Determine curr_installdir without caring for symlinked callers. | |
32 curr_installdir=`echo "$0" | sed -e 's,/[^/]*$,,'` | |
33 curr_installdir=`cd "$curr_installdir" && pwd` | |
34 # Compute the original/current installation prefixes by stripping the | |
35 # trailing directories off the original/current installation directories. | |
36 while true; do | |
37 orig_last=`echo "$orig_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'` | |
38 curr_last=`echo "$curr_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'` | |
39 if test -z "$orig_last" || test -z "$curr_last"; then | |
40 break | |
41 fi | |
42 if test "$orig_last" != "$curr_last"; then | |
43 break | |
44 fi | |
45 orig_installdir=`echo "$orig_installdir" | sed -e 's,/[^/]*$,,'` | |
46 curr_installdir=`echo "$curr_installdir" | sed -e 's,/[^/]*$,,'` | |
47 done | |
48 # Now relocate the directory variables that we use. | |
49 libdir=`echo "$libdir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'` | |
50 localedir=`echo "$localedir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'` | |
51 fi | |
52 | |
53 # Internationalization. | |
54 . gettext.sh | |
55 TEXTDOMAIN=gettext-tools | |
56 export TEXTDOMAIN | |
57 TEXTDOMAINDIR="$localedir" | |
58 export TEXTDOMAINDIR | |
59 | |
60 # Redirect fileno 3 to interactive I/O. | |
61 exec 3>/dev/tty | |
62 | |
63 # Output a prompt. | |
64 if test $# != 0; then | |
65 echo "$1" 1>&3 | |
66 fi | |
67 | |
68 # Find the user name on the local machine. | |
69 user=`id -u -n 2>/dev/null` | |
70 if test -z "$user"; then | |
71 user="$USER" | |
72 if test -z "$user"; then | |
73 user="$LOGNAME" | |
74 if test -z "$user"; then | |
75 user=unknown | |
76 fi | |
77 fi | |
78 fi | |
79 | |
80 # Find the hostname. | |
81 # hostname on some systems (SVR3.2, old Linux) returns a bogus exit status, | |
82 # so uname gets run too, so we keep only the first line of output. | |
83 #host=`(hostname || uname -n) 2>/dev/null | sed 1q` | |
84 host=`"$libdir"/gettext/hostname --short 2>/dev/null | sed 1q` | |
85 | |
86 # Find the hostname. | |
87 hostfqdn=`"$libdir"/gettext/hostname --fqdn 2>/dev/null | sed 1q` | |
88 | |
89 # Find a list of email addresses from various mailer configuration files. | |
90 # All mailers use configuration files under $HOME. We handle them in a | |
91 # last-modified - first-priority order. | |
92 cd $HOME | |
93 files="" | |
94 | |
95 # ----------------------- BEGIN MAILER SPECIFIC CODE ----------------------- | |
96 | |
97 # Mozilla Thunderbird addresses | |
98 files="$files .thunderbird/*/prefs.js" | |
99 | |
100 # Mozilla addresses | |
101 files="$files .mozilla/*/prefs.js" | |
102 | |
103 # Netscape 4 addresses | |
104 files="$files .netscape/liprefs.js .netscape/preferences.js" | |
105 | |
106 # Netscape 3 addresses | |
107 files="$files .netscape/preferences" | |
108 | |
109 # Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses | |
110 # XEmacs mew addresses | |
111 files="$files .emacs .emacs.el" | |
112 | |
113 # KDE2 addresses | |
114 files="$files .kde2/share/config/emaildefaults" | |
115 | |
116 # KDE kmail addresses | |
117 files="$files .kde2/share/config/kmailrc" | |
118 | |
119 # GNOME evolution 2 addresses | |
120 files="$files .gconf/apps/evolution/mail/%gconf.xml" | |
121 | |
122 # GNOME evolution 1 addresses | |
123 files="$files evolution/config.xmldb" | |
124 | |
125 # GNOME balsa addresses | |
126 files="$files .gnome/balsa" | |
127 | |
128 # StarOffice and OpenOffice addresses | |
129 sed_dos2unix='s/\r$//' | |
130 sed_soffice51='s,StarOffice 5\.1=\(.*\)$,\1/sofficerc,p' | |
131 sed_soffice52='s,StarOffice 5\.2=\(.*\)$,\1/user/sofficerc,p' | |
132 sed_ooffice='s,^OpenOffice[^=]*=\(.*\)$,\1/user/config/registry/instance/org/openoffice/UserProfile.xml,p' | |
133 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://*,/,'` | |
134 | |
135 # mutt addresses | |
136 files="$files .muttrc" | |
137 | |
138 # pine addresses | |
139 files="$files .pinerc" | |
140 | |
141 # xfmail addresses | |
142 files="$files .xfmail/.xfmailrc" | |
143 | |
144 # tkrat addresses | |
145 files="$files .ratatosk/ratatoskrc" | |
146 | |
147 # ----------------------- END MAILER SPECIFIC CODE ----------------------- | |
148 | |
149 # Expand wildcards and remove nonexistent files from the list. | |
150 nfiles="" | |
151 for file in $files; do | |
152 if test -r "$file" && test ! -d "$file"; then | |
153 nfiles="$nfiles $file" | |
154 fi | |
155 done | |
156 files="$nfiles" | |
157 | |
158 addresses="" | |
159 | |
160 if test -n "$files"; then | |
161 | |
162 for file in `ls -t $files`; do | |
163 | |
164 case "$file" in | |
165 | |
166 # ----------------------- BEGIN MAILER SPECIFIC CODE ----------------------- | |
167 | |
168 # Mozilla and Mozilla Thunderbird addresses | |
169 .mozilla/*/prefs.js | .thunderbird/*/prefs.js) | |
170 addresses="$addresses "`grep -h '^user_pref("mail\.identity\..*\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\..*\.useremail", "\(.*\)");$/\1/'` | |
171 ;; | |
172 | |
173 # Netscape 4 addresses | |
174 .netscape/liprefs.js | .netscape/preferences.js) | |
175 addresses="$addresses "`grep -h '^user_pref("mail\.identity\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\.useremail", "\(.*\)");$/\1/'` | |
176 ;; | |
177 | |
178 # Netscape 3 addresses | |
179 .netscape/preferences) | |
180 addresses="$addresses "`grep -h '^EMAIL_ADDRESS:' $file 2>/dev/null | sed -e 's/^EMAIL_ADDRESS:[ ]*//'` | |
181 ;; | |
182 | |
183 .emacs | .emacs.el) | |
184 # Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses | |
185 addresses="$addresses "`grep -h '[ (]user-mail-address "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]user-mail-address "\([^"]*\)".*$/\1/'` | |
186 # XEmacs mew addresses | |
187 domains=`grep -h '[ (]mew-mail-domain "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]mew-mail-domain "\([^"]*\)".*$/\1/'` | |
188 if test -n "$domains"; then | |
189 for domain in $domains; do | |
190 addresses="$addresses ${user}@$domain" | |
191 done | |
192 fi | |
193 ;; | |
194 | |
195 # KDE2 addresses | |
196 .kde2/share/config/emaildefaults) | |
197 addresses="$addresses "`grep -h '^EmailAddress=' $file 2>/dev/null | sed -e 's/^EmailAddress=//'` | |
198 ;; | |
199 | |
200 # KDE kmail addresses | |
201 .kde2/share/config/kmailrc) | |
202 addresses="$addresses "`grep -h '^Email Address=' $file 2>/dev/null | sed -e 's/^Email Address=//'` | |
203 ;; | |
204 | |
205 # GNOME evolution 2 addresses | |
206 .gconf/apps/evolution/mail/%gconf.xml) | |
207 sedexpr0='s,^.*<addr-spec>\(.*\)</addr-spec>.*$,\1,p' | |
208 addresses="$addresses "`sed -n -e "$sedexpr0" < $file` | |
209 ;; | |
210 | |
211 # GNOME evolution 1 addresses | |
212 evolution/config.xmldb) | |
213 sedexpr0='s/^.*<entry name="identity_address_[0-9]*" type="string" value="\([^"]*\)".*$/\1/p' | |
214 sedexpr1='s/\(..\)/\\x\1/g' | |
215 sedexpr2='s,$,\\n,' | |
216 addresses="$addresses "`sed -n -e "$sedexpr0" < $file | while read hexstring; do printf \`echo "$hexstring" | sed -e "$sedexpr1" -e "$sedexpr2"\`; done` | |
217 ;; | |
218 | |
219 # GNOME balsa addresses | |
220 .gnome/balsa) | |
221 addresses="$addresses "`grep -h '^Address=' $file 2>/dev/null | sed -e 's/^Address=//'` | |
222 ;; | |
223 | |
224 # OpenOffice addresses | |
225 */UserProfile.xml) | |
226 addresses="$addresses "`sed -n -e 's,^.*<mail cfg:type="string">\(.*\)</mail>.*$,\1,p' $file 2>/dev/null` | |
227 ;; | |
228 | |
229 # StarOffice addresses | |
230 # Not a typo. They really write "Adress" with a single d. | |
231 # German orthography... | |
232 */sofficerc) | |
233 addresses="$addresses "`grep -h '^User-Adress=' $file 2>/dev/null | sed -e 's/#[^#]*$//' -e 's/^.*#//'` | |
234 ;; | |
235 | |
236 # mutt addresses | |
237 .muttrc) | |
238 mutt_addresses=`grep -h '^set from="[^"]*"[ ]*$' $file 2>/dev/null | sed -e 's/^set from="\([^"]*\)"[ ]*$/\1/'` | |
239 if test -n "$mutt_addresses"; then | |
240 addresses="$addresses $mutt_addresses" | |
241 else | |
242 # mutt uses $EMAIL as fallback. | |
243 if test -n "$EMAIL"; then | |
244 addresses="$addresses $EMAIL" | |
245 fi | |
246 fi | |
247 ;; | |
248 | |
249 # pine addresses | |
250 .pinerc) | |
251 domains=`grep -h '^user-domain=' $file 2>/dev/null | sed -e 's/^user-domain=//'` | |
252 if test -n "$domains"; then | |
253 for domain in $domains; do | |
254 addresses="$addresses ${user}@$domain" | |
255 done | |
256 else | |
257 # The use-only-domain-name option is only used if the user-domain option is not present. | |
258 domains=`grep -h '^use-only-domain-name=' $file 2>/dev/null | sed -e 's/^use-only-domain-name=//'` | |
259 if test "Yes" = "$domains"; then | |
260 addresses="$addresses ${user}@"`echo "$hostfqdn" | sed -e 's/^[^.]*\.//'` | |
261 fi | |
262 fi | |
263 ;; | |
264 | |
265 # xfmail addresses | |
266 .xfmail/.xfmailrc) | |
267 addresses="$addresses "`grep -h '^from=.*<.*>' $file 2>/dev/null | sed -e 's/^.*<\([^<>]*\)>.*$/\1/'` | |
268 ;; | |
269 | |
270 # tkrat addresses | |
271 .ratatosk/ratatoskrc) | |
272 domains=`grep -h '^set option(masquerade_as) ' $file 2>/dev/null | sed -e 's/^set option(masquerade_as) //'` | |
273 if test -n "$domains"; then | |
274 for domain in $domains; do | |
275 addresses="$addresses ${user}@$domain" | |
276 done | |
277 else | |
278 # The domain option is used only if the masquerade_as option is not present. | |
279 domains=`grep -h '^set option(domain) ' $file 2>/dev/null | sed -e 's/^set option(domain) //'` | |
280 if test -n "$domains"; then | |
281 for domain in $domains; do | |
282 addresses="$addresses ${user}@${host}.$domain" | |
283 done | |
284 fi | |
285 fi | |
286 ;; | |
287 | |
288 # ----------------------- END MAILER SPECIFIC CODE ----------------------- | |
289 | |
290 esac | |
291 | |
292 done | |
293 | |
294 fi | |
295 | |
296 # Some Debian systems have a file /etc/mailname. | |
297 if test -r /etc/mailname; then | |
298 hostmailname=`cat /etc/mailname` | |
299 if test -n "$hostmailname"; then | |
300 addresses="$addresses ${user}@$hostmailname" | |
301 fi | |
302 fi | |
303 | |
304 # SuSE Linux >= 8.0 systems have a file /etc/sysconfig/mail. | |
305 if test -r /etc/sysconfig/mail; then | |
306 hostmailname=`. /etc/sysconfig/mail && echo "$FROM_HEADER"` | |
307 if test -n "$hostmailname"; then | |
308 addresses="$addresses ${user}@$hostmailname" | |
309 fi | |
310 fi | |
311 | |
312 # elm has no user-defined addresses. | |
313 # mailx has no user-defined addresses. | |
314 # mh has no user-defined addresses. | |
315 # They use the system default. | |
316 addresses="$addresses ${user}@$hostfqdn" | |
317 | |
318 # Normalize addresses: remove addresses without @, lowercase the part after @, | |
319 # and remove duplicates. | |
320 lowercase_sed='{ | |
321 h | |
322 s/^[^@]*@\(.*\)$/\1/ | |
323 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ | |
324 x | |
325 s/^\([^@]*\)@.*/\1@/ | |
326 G | |
327 s/\n// | |
328 p | |
329 }' | |
330 naddresses="" | |
331 for addr in $addresses; do | |
332 case "$addr" in | |
333 "<"*">") addr=`echo "$addr" | sed -e 's/^<//' -e 's/>$//'` ;; | |
334 esac | |
335 case "$addr" in | |
336 *@*) | |
337 addr=`echo "$addr" | sed -n -e "$lowercase_sed"` | |
338 case " $naddresses " in | |
339 *" $addr "*) ;; | |
340 *) naddresses="$naddresses $addr" ;; | |
341 esac | |
342 ;; | |
343 esac | |
344 done | |
345 addresses="$naddresses" | |
346 | |
347 # Now it's time to ask the user. | |
348 case "$addresses" in | |
349 " "*" "*) | |
350 # At least two addresses. | |
351 lines="" | |
352 i=0 | |
353 for addr in $addresses; do | |
354 i=`expr $i + 1` | |
355 lines="${lines}${i} ${addr} | |
356 " | |
357 done | |
358 while true; do | |
359 { gettext "Which is your email address?"; echo; } 1>&3 | |
360 echo "$lines" 1>&3 | |
361 { gettext "Please choose the number, or enter your email address."; echo; } 1>&3 | |
362 read answer < /dev/tty | |
363 case "$answer" in | |
364 *@*) ;; | |
365 [0-9]*) | |
366 i=0 | |
367 for addr in $addresses; do | |
368 i=`expr $i + 1` | |
369 if test "$i" = "$answer"; then | |
370 break 2 | |
371 fi | |
372 done | |
373 ;; | |
374 esac | |
375 case "$answer" in | |
376 "<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
377 esac | |
378 case "$answer" in | |
379 *" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
380 *@*.*) ;; | |
381 *@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
382 *) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
383 esac | |
384 addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
385 break | |
386 done | |
387 ;; | |
388 " "*) | |
389 # One address. | |
390 while true; do | |
391 { gettext "Is the following your email address?"; echo; } 1>&3 | |
392 echo " $addresses" 1>&3 | |
393 { gettext "Please confirm by pressing Return, or enter your email address."; echo; } 1>&3 | |
394 read answer < /dev/tty | |
395 if test -z "$answer"; then | |
396 addr=`echo "$addresses" | sed -e 's/^ //'` | |
397 break | |
398 fi | |
399 case "$answer" in | |
400 "<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
401 esac | |
402 case "$answer" in | |
403 *" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
404 *@*.*) ;; | |
405 *@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
406 *) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
407 esac | |
408 addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
409 break | |
410 done | |
411 ;; | |
412 "") | |
413 # No address. | |
414 { gettext "Couldn't find out about your email address."; echo; } 1>&3 | |
415 while true; do | |
416 { gettext "Please enter your email address."; echo; } 1>&3 | |
417 read answer < /dev/tty | |
418 case "$answer" in | |
419 "<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;; | |
420 esac | |
421 case "$answer" in | |
422 *" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;; | |
423 *@*.*) ;; | |
424 *@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;; | |
425 *) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;; | |
426 esac | |
427 addr=`echo "$answer" | sed -n -e "$lowercase_sed"` | |
428 break | |
429 done | |
430 ;; | |
431 *) echo "internal error" 1>&3 ; exit 1 ;; | |
432 esac | |
433 | |
434 # Print to standard output. | |
435 echo "$addr" |