Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Anton Shepelev <anton.txt@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Winding and unwinding |
| Date | 2016-12-12 23:15 +0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <20161212231553.6e4459c2a4d41510224945ef@gmail.com> (permalink) |
| References | <a844feca-3b28-4d3b-8a19-6a29d08ed8e2@googlegroups.com> |
Rick C. Hodgin:
> Suppose I have a process which must operate on
> these two files which are known to be less than a
> few hundred KB each, on a machine which has Giga-
> bytes of memory:
>
> 1. Open file1 and file2
> 2. Get both file's sizes
> 3. Note if file1 and file2 sizes are equal
> 4. Read both file's contents into memory
> 5. Compare content byte-by-byte, see if they
> contain any binary
> 6. characters (non-A_Z,a_z,0_9, plus standard
> symbols, CR, LF,
> 7. and a few others), and if they're exactly
> equal/identical
> 8. Return the results
>
> In the process of doing this, there will be places
> where the process could fail. File2 may be exclu-
> sively used by another process, and cannot be
> opened. This may have been discovered after file1
> had already been opened, for example, and must be
> closed. But, file2 hasn't yet been opened. Nor
> has any memory been allocated, etc.
If you will pardon my impudence in offering an an-
swer, I usually solve such problems using goto
statements, e.g:
int result = ERROR;
f1_handle = open( file_name_1 );
if( f1_nandle == NULL )
{ goto ERROR; }
f1_handle = open( file_name_2 );
if( f1_nandle == NULL )
{ goto ERROR_1; }
if( do_stuff( f1_handle, f2_handle ) != 0 )
{ goto ERROR_21; }
result = SUCCESS;
ERROR_21:
close( f2_handle );
ERROR_1:
close( f1_handle );
ERROR:
return result;
Yes, I do agree with Knuth that goto can be used in
a structured way.
--
() ascii ribbon campaign - against html e-mail
/\ http://preview.tinyurl.com/qcy6mjc [archived]
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 11:46 -0800
Re: Winding and unwinding Anton Shepelev <anton.txt@gmail.com> - 2016-12-12 23:15 +0300
Re: Winding and unwinding Anton Shepelev <anton.txt@gmail.com> - 2016-12-12 23:21 +0300
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 13:29 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 14:07 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-15 08:54 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-15 09:04 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-15 09:15 -0800
Re: Winding and unwinding supercat@casperkitty.com - 2016-12-12 12:21 -0800
Re: Winding and unwinding BartC <bc@freeuk.com> - 2016-12-12 20:48 +0000
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 13:28 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 13:14 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 14:26 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 16:13 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 16:33 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 16:48 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 17:05 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 17:22 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 17:33 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-12 17:55 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 03:11 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-13 03:39 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 03:59 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 04:57 -0800
Re: Winding and unwinding BartC <bc@freeuk.com> - 2016-12-13 13:24 +0000
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 05:34 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 05:34 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-13 06:01 -0800
Re: Winding and unwinding Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-13 15:10 +0000
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-13 05:30 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 05:45 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 05:58 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-13 06:04 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 10:24 -0800
Re: Winding and unwinding Chad <cdalten@gmail.com> - 2016-12-13 21:44 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-14 02:13 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-14 11:45 -0800
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-14 12:09 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-14 12:50 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-17 05:28 -0800
Re: Winding and unwinding BartC <bc@freeuk.com> - 2016-12-13 14:54 +0000
Re: Winding and unwinding "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-13 07:03 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 07:09 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-13 05:27 -0800
Re: Winding and unwinding fir <profesor.fir@gmail.com> - 2016-12-12 17:13 -0800
Re: Winding and unwinding Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-12 16:28 -0800
csiph-web