rev |
line source |
yuuji@1
|
1 #!/usr/local/bin/perl
|
yuuji@1
|
2 # Customize these variables.
|
yuuji@1
|
3 # If you change APOPFILEBASE, change the same variable in apopcall.c too.
|
yuuji@1
|
4 # See http://www.gentei.org/~yuuji/software/imapext/
|
yuuji@1
|
5
|
yuuji@1
|
6 $HOME=$ENV{"HOME"};
|
yuuji@1
|
7
|
yuuji@1
|
8 $DEFAULTMAILDIR = "Maildir"; # Must be same as ../src/osdep/unix/Makefile
|
yuuji@1
|
9
|
yuuji@1
|
10 $APOPFILEBASE = ".apop"; # "$HOME/$APOPFILEBASE" is the password file
|
yuuji@1
|
11 # $APOPFILEBASE = "$DEFAULTMAILDIR/apop";
|
yuuji@1
|
12 # $APOPFILEBASE = "Mail/apop";
|
yuuji@1
|
13
|
yuuji@1
|
14 $ENCODER = "cat";
|
yuuji@1
|
15 # $ENCODER = "gzip";
|
yuuji@1
|
16 # $ENCODER = "uuencode $$|gzip";
|
yuuji@1
|
17
|
yuuji@1
|
18 $DECODER = "cat";
|
yuuji@1
|
19 # $DECODER = "gzip -dc";
|
yuuji@1
|
20 # $DECODER = "gzip -dc | uudecode";
|
yuuji@1
|
21
|
yuuji@1
|
22 $DOTQMAIL = ".qmail"; # qmail
|
yuuji@1
|
23 # $DOTQMAIL = ".forward"; # Postfix
|
yuuji@1
|
24
|
yuuji@1
|
25 $XADDR_DELIM = "-"; # qmail
|
yuuji@1
|
26 # $XADDR_DELIM = "+"; # Postfix
|
yuuji@1
|
27
|
yuuji@1
|
28 $HERE = "."; # qmail
|
yuuji@1
|
29 # $HERE = "~"; # Postfix
|
yuuji@1
|
30
|
yuuji@1
|
31 $EXT = "";
|
yuuji@1
|
32 $force = 0;
|
yuuji@1
|
33 $base = 0;
|
yuuji@1
|
34
|
yuuji@1
|
35 $APOPFILE = "$HOME/$APOPFILEBASE";
|
yuuji@1
|
36
|
yuuji@1
|
37 sub handler {
|
yuuji@1
|
38 system "stty echo";
|
yuuji@1
|
39 print STDERR "Abort:\n";
|
yuuji@1
|
40 exit 1;
|
yuuji@1
|
41 }
|
yuuji@1
|
42
|
yuuji@1
|
43 $SIG{'INT'} = $SIG{'KILL'} = $SIG{'QUIT'} = $SIG{'HUP'} = 'handler';
|
yuuji@1
|
44
|
yuuji@1
|
45 while ($_=$ARGV[0], /^-.+/ && shift) {
|
yuuji@1
|
46 if (/^-e/) {
|
yuuji@1
|
47 $APOPFILE .= $XADDR_DELIM . ($EXT=shift);
|
yuuji@1
|
48 } elsif (/^-b/) {
|
yuuji@1
|
49 $base++;
|
yuuji@1
|
50 } elsif (/^-c/) {
|
yuuji@1
|
51 $create++;
|
yuuji@1
|
52 } elsif (/^-s/) {
|
yuuji@1
|
53 $stream++;
|
yuuji@1
|
54 # and exit;
|
yuuji@1
|
55 } elsif (/^-h/) {
|
yuuji@1
|
56 &usage; # and exit
|
yuuji@1
|
57 }
|
yuuji@1
|
58 }
|
yuuji@1
|
59
|
yuuji@1
|
60 sub checkmaildir {
|
yuuji@1
|
61 local($dotqmail) = ("$HOME/$DOTQMAIL");
|
yuuji@1
|
62 local($maildir) = ($DEFAULTMAILDIR); # default
|
yuuji@1
|
63 $dotqmail .= "$XADDR_DELIM$EXT" if $EXT;
|
yuuji@1
|
64 $maildir .= "-$EXT" if $EXT;
|
yuuji@1
|
65 unless (-f "$dotqmail") {
|
yuuji@1
|
66 if ($create) {
|
yuuji@1
|
67 if (open(DQMAIL, "> $dotqmail")) {
|
yuuji@1
|
68 print DQMAIL "$HERE/$maildir/\n";
|
yuuji@1
|
69 print "File [$dotqmail] created\n";
|
yuuji@1
|
70 close(DQMAIL);
|
yuuji@1
|
71 }
|
yuuji@1
|
72 } else {
|
yuuji@1
|
73 print "$dotqmail file does not exist.\n"; # should go to stdout
|
yuuji@1
|
74 print "Your should create $maildir first!\n";
|
yuuji@1
|
75 print "(-c option automatically makes it)\n";
|
yuuji@1
|
76 exit 1;
|
yuuji@1
|
77 }
|
yuuji@1
|
78 }
|
yuuji@1
|
79 if (-s $dotqmail) {
|
yuuji@1
|
80 $maildir='';
|
yuuji@1
|
81 if (open(DQMAIL, "< $dotqmail")) {
|
yuuji@1
|
82 while (<DQMAIL>) {
|
yuuji@1
|
83 s/[\r\n \t]*$//g;
|
yuuji@1
|
84 next if /#/;
|
yuuji@1
|
85 next unless m,\./.*/,;
|
yuuji@1
|
86 chop; # strip trailing "/"
|
yuuji@1
|
87 $maildir = $_;
|
yuuji@1
|
88 last;
|
yuuji@1
|
89 }
|
yuuji@1
|
90 close(DQMAIL);
|
yuuji@1
|
91 $maildir = $DEFAULTMAILDIR if $maildir eq '';
|
yuuji@1
|
92 unless (-d "$HOME/$maildir"
|
yuuji@1
|
93 && -d "$HOME/$maildir/new"
|
yuuji@1
|
94 && -d "$HOME/$maildir/cur"
|
yuuji@1
|
95 && -d "$HOME/$maildir/tmp") {
|
yuuji@1
|
96 if ($create) {
|
yuuji@1
|
97 mkdir "$HOME/$maildir", 0700;
|
yuuji@1
|
98 mkdir "$HOME/$maildir/new", 0700;
|
yuuji@1
|
99 mkdir "$HOME/$maildir/cur", 0700;
|
yuuji@1
|
100 mkdir "$HOME/$maildir/tmp", 0700;
|
yuuji@1
|
101 print "Maildir [$maildir/] created\n";
|
yuuji@1
|
102 } else {
|
yuuji@1
|
103 print "Maildir($maildir) does not exist\n";
|
yuuji@1
|
104 print "Your should do maildirmake $maildir first!\n";
|
yuuji@1
|
105 print "(-c option automatically makes it)\n";
|
yuuji@1
|
106 exit 1;
|
yuuji@1
|
107 }
|
yuuji@1
|
108 }
|
yuuji@1
|
109 }
|
yuuji@1
|
110 }
|
yuuji@1
|
111 }
|
yuuji@1
|
112
|
yuuji@1
|
113 sub usage {
|
yuuji@1
|
114 local($mydir, $myname) = ($0 =~ m,(.*)/(.*),);
|
yuuji@1
|
115 print<<_EOU_;
|
yuuji@1
|
116 $myname Change Mail password for imap-4.7+qmailapop
|
yuuji@1
|
117 Usage: $myname [options]
|
yuuji@1
|
118 Options are...
|
yuuji@1
|
119 -e EXT Set target email address to "user-EXT"
|
yuuji@1
|
120 -c If no .qmail file and Maildir, create them
|
yuuji@1
|
121
|
yuuji@1
|
122 _EOU_
|
yuuji@1
|
123 exit 0;
|
yuuji@1
|
124 }
|
yuuji@1
|
125
|
yuuji@1
|
126 if ($stream) {
|
yuuji@1
|
127 &stream;
|
yuuji@1
|
128 exit; # not reached
|
yuuji@1
|
129 }
|
yuuji@1
|
130 $OK=0;
|
yuuji@1
|
131 until ($OK) {
|
yuuji@1
|
132 system "stty -echo";
|
yuuji@1
|
133 print STDERR "Enter APOP Password: ";
|
yuuji@1
|
134 $new1 = <>;
|
yuuji@1
|
135 print STDERR "\n";
|
yuuji@1
|
136 if (length($new1) == 1) {
|
yuuji@1
|
137 print STDERR "Canceled\n";
|
yuuji@1
|
138 exit 1;
|
yuuji@1
|
139 } elsif (length($new1) < 9) {
|
yuuji@1
|
140 print STDERR "Password is too short! Please use more than 8 chars.\n";
|
yuuji@1
|
141 next;
|
yuuji@1
|
142 }
|
yuuji@1
|
143 print STDERR "Again APOP Password: ";
|
yuuji@1
|
144 $new2 = <>;
|
yuuji@1
|
145 if ($new1 eq $new2) {
|
yuuji@1
|
146 $OK=1;
|
yuuji@1
|
147 } else {
|
yuuji@1
|
148 print STDERR "\nPassword mismatch! Try again.\n";
|
yuuji@1
|
149 }
|
yuuji@1
|
150 }
|
yuuji@1
|
151 #OK
|
yuuji@1
|
152 &checkmaildir;
|
yuuji@1
|
153 system "stty echo";
|
yuuji@1
|
154 open(NP, "| $ENCODER > $APOPFILE") || die "Cannot write on $APOPFILE\n";
|
yuuji@1
|
155 print NP "$new1";
|
yuuji@1
|
156 close(NP);
|
yuuji@1
|
157 chmod 0600, $APOPFILE;
|
yuuji@1
|
158 print STDERR "\nUpdated APOP password successfully.\n";
|
yuuji@1
|
159
|
yuuji@1
|
160 sub stream { # Must match with old password
|
yuuji@1
|
161 local($PASS, $old, $new1, $new2, $master) = (0);
|
yuuji@1
|
162 local($masterfile) = ($APOPFILE);
|
yuuji@1
|
163 $masterfile = "$HOME/$APOPFILEBASE" if $base;
|
yuuji@1
|
164 exit 1 if ($> == 0);
|
yuuji@1
|
165 while (<>) {
|
yuuji@1
|
166 chop;
|
yuuji@1
|
167 if (/^PASS (.*)$/i) {
|
yuuji@1
|
168 $old = $1;
|
yuuji@1
|
169 } elsif (/^NEW (.*)/i) {
|
yuuji@1
|
170 $new1 = $1;
|
yuuji@1
|
171 } elsif (/^NEW2 (.*)/i) {
|
yuuji@1
|
172 $new2 = $1;
|
yuuji@1
|
173 }
|
yuuji@1
|
174 last if ("$new1" ne "" && "$new2" ne "");
|
yuuji@1
|
175 }
|
yuuji@1
|
176 if (-s $APOPFILE || ($base && -f $masterfile)) { # Already exist
|
yuuji@1
|
177 if (open(OLD, "$DECODER $masterfile |")) {
|
yuuji@1
|
178 ($master = <OLD>) =~ s/[\n\r]$//g;
|
yuuji@1
|
179 close(OLD);
|
yuuji@1
|
180 } else {
|
yuuji@1
|
181 print "Old password file corrupted.\n";
|
yuuji@1
|
182 print "Please ask to administrator.\n";
|
yuuji@1
|
183 exit 1;
|
yuuji@1
|
184 }
|
yuuji@1
|
185 if ($master ne $old) {
|
yuuji@1
|
186 print "Illegal password\nBye\n";
|
yuuji@1
|
187 exit 1;
|
yuuji@1
|
188 }
|
yuuji@1
|
189 }
|
yuuji@1
|
190 if ($new1 ne $new2) {
|
yuuji@1
|
191 print "Password(new) mismatch\nBye\n";
|
yuuji@1
|
192 exit 1;
|
yuuji@1
|
193 }
|
yuuji@1
|
194 # OK, now begin to create!
|
yuuji@1
|
195 &checkmaildir;
|
yuuji@1
|
196 if (open(P, "| $ENCODER > $APOPFILE")) {
|
yuuji@1
|
197 # open success
|
yuuji@1
|
198 print P "$new1\n";
|
yuuji@1
|
199 close(P);
|
yuuji@1
|
200 chmod 0600, $APOPFILE;
|
yuuji@1
|
201 if (-s $APOPFILE) {
|
yuuji@1
|
202 print "Success!\n";
|
yuuji@1
|
203 exit 0;
|
yuuji@1
|
204 }
|
yuuji@1
|
205 } else {
|
yuuji@1
|
206 print "Cannot output to $APOPFILE\nBye\n";
|
yuuji@1
|
207 exit 1;
|
yuuji@1
|
208 }
|
yuuji@1
|
209 exit 0;
|
yuuji@1
|
210 }
|
yuuji@4
|
211 #!/usr/local/bin/perl
|
yuuji@4
|
212 # Customize these variables.
|
yuuji@4
|
213 # If you change APOPFILEBASE, change the same variable in apopcall.c too.
|
yuuji@4
|
214 # See http://www.gentei.org/~yuuji/software/imapext/
|
yuuji@4
|
215
|
yuuji@4
|
216 $HOME=$ENV{"HOME"};
|
yuuji@4
|
217
|
yuuji@4
|
218 $DEFAULTMAILDIR = "Maildir"; # Must be same as ../src/osdep/unix/Makefile
|
yuuji@4
|
219
|
yuuji@4
|
220 $APOPFILEBASE = ".apop"; # "$HOME/$APOPFILEBASE" is the password file
|
yuuji@4
|
221 # $APOPFILEBASE = "$DEFAULTMAILDIR/apop";
|
yuuji@4
|
222 # $APOPFILEBASE = "Mail/apop";
|
yuuji@4
|
223
|
yuuji@4
|
224 $ENCODER = "cat";
|
yuuji@4
|
225 # $ENCODER = "gzip";
|
yuuji@4
|
226 # $ENCODER = "uuencode $$|gzip";
|
yuuji@4
|
227
|
yuuji@4
|
228 $DECODER = "cat";
|
yuuji@4
|
229 # $DECODER = "gzip -dc";
|
yuuji@4
|
230 # $DECODER = "gzip -dc | uudecode";
|
yuuji@4
|
231
|
yuuji@4
|
232 $DOTQMAIL = ".qmail"; # qmail
|
yuuji@4
|
233 # $DOTQMAIL = ".forward"; # Postfix
|
yuuji@4
|
234
|
yuuji@4
|
235 $XADDR_DELIM = "-"; # qmail
|
yuuji@4
|
236 # $XADDR_DELIM = "+"; # Postfix
|
yuuji@4
|
237
|
yuuji@4
|
238 $HERE = "."; # qmail
|
yuuji@4
|
239 # $HERE = "~"; # Postfix
|
yuuji@4
|
240
|
yuuji@4
|
241 $EXT = "";
|
yuuji@4
|
242 $force = 0;
|
yuuji@4
|
243 $base = 0;
|
yuuji@4
|
244
|
yuuji@4
|
245 $APOPFILE = "$HOME/$APOPFILEBASE";
|
yuuji@4
|
246
|
yuuji@4
|
247 sub handler {
|
yuuji@4
|
248 system "stty echo";
|
yuuji@4
|
249 print STDERR "Abort:\n";
|
yuuji@4
|
250 exit 1;
|
yuuji@4
|
251 }
|
yuuji@4
|
252
|
yuuji@4
|
253 $SIG{'INT'} = $SIG{'KILL'} = $SIG{'QUIT'} = $SIG{'HUP'} = 'handler';
|
yuuji@4
|
254
|
yuuji@4
|
255 while ($_=$ARGV[0], /^-.+/ && shift) {
|
yuuji@4
|
256 if (/^-e/) {
|
yuuji@4
|
257 $APOPFILE .= $XADDR_DELIM . ($EXT=shift);
|
yuuji@4
|
258 } elsif (/^-b/) {
|
yuuji@4
|
259 $base++;
|
yuuji@4
|
260 } elsif (/^-c/) {
|
yuuji@4
|
261 $create++;
|
yuuji@4
|
262 } elsif (/^-s/) {
|
yuuji@4
|
263 $stream++;
|
yuuji@4
|
264 # and exit;
|
yuuji@4
|
265 } elsif (/^-h/) {
|
yuuji@4
|
266 &usage; # and exit
|
yuuji@4
|
267 }
|
yuuji@4
|
268 }
|
yuuji@4
|
269
|
yuuji@4
|
270 sub checkmaildir {
|
yuuji@4
|
271 local($dotqmail) = ("$HOME/$DOTQMAIL");
|
yuuji@4
|
272 local($maildir) = ($DEFAULTMAILDIR); # default
|
yuuji@4
|
273 $dotqmail .= "$XADDR_DELIM$EXT" if $EXT;
|
yuuji@4
|
274 $maildir .= "-$EXT" if $EXT;
|
yuuji@4
|
275 unless (-f "$dotqmail") {
|
yuuji@4
|
276 if ($create) {
|
yuuji@4
|
277 if (open(DQMAIL, "> $dotqmail")) {
|
yuuji@4
|
278 print DQMAIL "$HERE/$maildir/\n";
|
yuuji@4
|
279 print "File [$dotqmail] created\n";
|
yuuji@4
|
280 close(DQMAIL);
|
yuuji@4
|
281 }
|
yuuji@4
|
282 } else {
|
yuuji@4
|
283 print "$dotqmail file does not exist.\n"; # should go to stdout
|
yuuji@4
|
284 print "Your should create $maildir first!\n";
|
yuuji@4
|
285 print "(-c option automatically makes it)\n";
|
yuuji@4
|
286 exit 1;
|
yuuji@4
|
287 }
|
yuuji@4
|
288 }
|
yuuji@4
|
289 if (-s $dotqmail) {
|
yuuji@4
|
290 $maildir='';
|
yuuji@4
|
291 if (open(DQMAIL, "< $dotqmail")) {
|
yuuji@4
|
292 while (<DQMAIL>) {
|
yuuji@4
|
293 s/[\r\n \t]*$//g;
|
yuuji@4
|
294 next if /#/;
|
yuuji@4
|
295 next unless m,\./.*/,;
|
yuuji@4
|
296 chop; # strip trailing "/"
|
yuuji@4
|
297 $maildir = $_;
|
yuuji@4
|
298 last;
|
yuuji@4
|
299 }
|
yuuji@4
|
300 close(DQMAIL);
|
yuuji@4
|
301 $maildir = $DEFAULTMAILDIR if $maildir eq '';
|
yuuji@4
|
302 unless (-d "$HOME/$maildir"
|
yuuji@4
|
303 && -d "$HOME/$maildir/new"
|
yuuji@4
|
304 && -d "$HOME/$maildir/cur"
|
yuuji@4
|
305 && -d "$HOME/$maildir/tmp") {
|
yuuji@4
|
306 if ($create) {
|
yuuji@4
|
307 mkdir "$HOME/$maildir", 0700;
|
yuuji@4
|
308 mkdir "$HOME/$maildir/new", 0700;
|
yuuji@4
|
309 mkdir "$HOME/$maildir/cur", 0700;
|
yuuji@4
|
310 mkdir "$HOME/$maildir/tmp", 0700;
|
yuuji@4
|
311 print "Maildir [$maildir/] created\n";
|
yuuji@4
|
312 } else {
|
yuuji@4
|
313 print "Maildir($maildir) does not exist\n";
|
yuuji@4
|
314 print "Your should do maildirmake $maildir first!\n";
|
yuuji@4
|
315 print "(-c option automatically makes it)\n";
|
yuuji@4
|
316 exit 1;
|
yuuji@4
|
317 }
|
yuuji@4
|
318 }
|
yuuji@4
|
319 }
|
yuuji@4
|
320 }
|
yuuji@4
|
321 }
|
yuuji@4
|
322
|
yuuji@4
|
323 sub usage {
|
yuuji@4
|
324 local($mydir, $myname) = ($0 =~ m,(.*)/(.*),);
|
yuuji@4
|
325 print<<_EOU_;
|
yuuji@4
|
326 $myname Change Mail password for imap-4.7+qmailapop
|
yuuji@4
|
327 Usage: $myname [options]
|
yuuji@4
|
328 Options are...
|
yuuji@4
|
329 -e EXT Set target email address to "user-EXT"
|
yuuji@4
|
330 -c If no .qmail file and Maildir, create them
|
yuuji@4
|
331
|
yuuji@4
|
332 _EOU_
|
yuuji@4
|
333 exit 0;
|
yuuji@4
|
334 }
|
yuuji@4
|
335
|
yuuji@4
|
336 if ($stream) {
|
yuuji@4
|
337 &stream;
|
yuuji@4
|
338 exit; # not reached
|
yuuji@4
|
339 }
|
yuuji@4
|
340 $OK=0;
|
yuuji@4
|
341 until ($OK) {
|
yuuji@4
|
342 system "stty -echo";
|
yuuji@4
|
343 print STDERR "Enter APOP Password: ";
|
yuuji@4
|
344 $new1 = <>;
|
yuuji@4
|
345 print STDERR "\n";
|
yuuji@4
|
346 if (length($new1) == 1) {
|
yuuji@4
|
347 print STDERR "Canceled\n";
|
yuuji@4
|
348 exit 1;
|
yuuji@4
|
349 } elsif (length($new1) < 9) {
|
yuuji@4
|
350 print STDERR "Password is too short! Please use more than 8 chars.\n";
|
yuuji@4
|
351 next;
|
yuuji@4
|
352 }
|
yuuji@4
|
353 print STDERR "Again APOP Password: ";
|
yuuji@4
|
354 $new2 = <>;
|
yuuji@4
|
355 if ($new1 eq $new2) {
|
yuuji@4
|
356 $OK=1;
|
yuuji@4
|
357 } else {
|
yuuji@4
|
358 print STDERR "\nPassword mismatch! Try again.\n";
|
yuuji@4
|
359 }
|
yuuji@4
|
360 }
|
yuuji@4
|
361 #OK
|
yuuji@4
|
362 &checkmaildir;
|
yuuji@4
|
363 system "stty echo";
|
yuuji@4
|
364 open(NP, "| $ENCODER > $APOPFILE") || die "Cannot write on $APOPFILE\n";
|
yuuji@4
|
365 print NP "$new1";
|
yuuji@4
|
366 close(NP);
|
yuuji@4
|
367 chmod 0600, $APOPFILE;
|
yuuji@4
|
368 print STDERR "\nUpdated APOP password successfully.\n";
|
yuuji@4
|
369
|
yuuji@4
|
370 sub stream { # Must match with old password
|
yuuji@4
|
371 local($PASS, $old, $new1, $new2, $master) = (0);
|
yuuji@4
|
372 local($masterfile) = ($APOPFILE);
|
yuuji@4
|
373 $masterfile = "$HOME/$APOPFILEBASE" if $base;
|
yuuji@4
|
374 exit 1 if ($> == 0);
|
yuuji@4
|
375 while (<>) {
|
yuuji@4
|
376 chop;
|
yuuji@4
|
377 if (/^PASS (.*)$/i) {
|
yuuji@4
|
378 $old = $1;
|
yuuji@4
|
379 } elsif (/^NEW (.*)/i) {
|
yuuji@4
|
380 $new1 = $1;
|
yuuji@4
|
381 } elsif (/^NEW2 (.*)/i) {
|
yuuji@4
|
382 $new2 = $1;
|
yuuji@4
|
383 }
|
yuuji@4
|
384 last if ("$new1" ne "" && "$new2" ne "");
|
yuuji@4
|
385 }
|
yuuji@4
|
386 if (-s $APOPFILE || ($base && -f $masterfile)) { # Already exist
|
yuuji@4
|
387 if (open(OLD, "$DECODER $masterfile |")) {
|
yuuji@4
|
388 ($master = <OLD>) =~ s/[\n\r]$//g;
|
yuuji@4
|
389 close(OLD);
|
yuuji@4
|
390 } else {
|
yuuji@4
|
391 print "Old password file corrupted.\n";
|
yuuji@4
|
392 print "Please ask to administrator.\n";
|
yuuji@4
|
393 exit 1;
|
yuuji@4
|
394 }
|
yuuji@4
|
395 if ($master ne $old) {
|
yuuji@4
|
396 print "Illegal password\nBye\n";
|
yuuji@4
|
397 exit 1;
|
yuuji@4
|
398 }
|
yuuji@4
|
399 }
|
yuuji@4
|
400 if ($new1 ne $new2) {
|
yuuji@4
|
401 print "Password(new) mismatch\nBye\n";
|
yuuji@4
|
402 exit 1;
|
yuuji@4
|
403 }
|
yuuji@4
|
404 # OK, now begin to create!
|
yuuji@4
|
405 &checkmaildir;
|
yuuji@4
|
406 if (open(P, "| $ENCODER > $APOPFILE")) {
|
yuuji@4
|
407 # open success
|
yuuji@4
|
408 print P "$new1\n";
|
yuuji@4
|
409 close(P);
|
yuuji@4
|
410 chmod 0600, $APOPFILE;
|
yuuji@4
|
411 if (-s $APOPFILE) {
|
yuuji@4
|
412 print "Success!\n";
|
yuuji@4
|
413 exit 0;
|
yuuji@4
|
414 }
|
yuuji@4
|
415 } else {
|
yuuji@4
|
416 print "Cannot output to $APOPFILE\nBye\n";
|
yuuji@4
|
417 exit 1;
|
yuuji@4
|
418 }
|
yuuji@4
|
419 exit 0;
|
yuuji@4
|
420 }
|