On Tue, Mar 31, 2009 at 11:21:22AM +0200, Polytropon wrote:
> I don't want to start a "style debate", but forgive me the
> following annotations:
> 
> 1. Use the tab character for indentation. You can set its
>    length with your favourite editor (e. g. mcedit: F9,
>    Options, General; joe: ^TD). Don't waste with spaces.


        Ja, been doing this since 1978.  Does anybody hit space-key 
        8 times!?

> 
> 2. The main() function should be declared as
>       int main(int argc, char *argv[])
>    or
>       int main(int argc, char **argv)
>    Note that it's returning (int). Use this functionality.


        I've come to prefer the *char argv[] ...  I didn't use the formal int
        return because this was supposed throwaway code.  (Going on years now
        tho, so ... my-bad.)

> 
> 3. In case of errors (e. g. incorrect number of parameters)
>    use fprintf() to stderr, or perror() with the builtin
>    error handling (e. g. for "file not found" by fopen()).
> 
> 4. Use the predefined return codes, don't hardcode them.
>    FreeBSD has EXiT_SUCCESS and EXIT_FAILURE, they're for
>    maximum compatibility (such as with Linux). There are
>    more exit codes for differentiation, but they're specific
>    to FreeBSD, as far as I know.


        This I did not know.  I have a prefab include file with a bunch 
        of my own similar #defines.  Wow, great!

> 
> 5. This is highly debatable: Use a good style for { and }.
> 

        Well, you're using the K&R { }; but for me, the "Ingres"
        style [[ yes, it was invented by someone else ]] gets my vote.
        I scan
        {
          and
        }

        more easily.  6 of one, half-dozen of another... .

> 6. Use delimiters around operators, e. g. buf[strlen(buf) - 1]
>    instead of buf[strlen(buf)-1]; increases readability.
> 

        Yup.  


> Here is the program again, with some stylistic modifications
> and the "correct" (read: recommended, usual) exit code handling:
> 
> 

        I'll swipe this.  I use this code with openoffice and abiword
        because I compose with vi;  but I almost always forget to run 
        my text thru joinlines and have to quit the word processor, run
        jlines <foo> bar; mv bar foo; then restart the word processor.
        I figure that I've spend several centuries of my lifetime messing 
        with jlines, so i'm overdue for doing it right....

        gary


> 
> 
> /*
>  * simple prog to join all | very nearly all lines of a text file
>  * that make up one paragraph into one LONG line.  
>  *
>  * paragraphs are delimiated by a single \n break.
>  */
> 
> #include <stdio.h>
> #include <string.h>
> #include <stdlib.h>
> 
> int main(int argc, char *argv[])
> {
>       char buf[65536];
> 
> 
>       if(argc == 1) {
>               fprintf(stderr, "Usage: %s < file > newfile\n", argv[0]);
>               exit(EXIT_FAILURE);
>       }
> 
>       while (fgets(buf, sizeof buf, stdin)) {
>               if(*buf == '\n') {
>                       fprintf(stdout, "\n\n");
>               } else {
>                       buf[strlen(buf) - 1] = ' ';
>                       fputs(buf, stdout);
>               }
>       }
> 
>       return EXIT_SUCCESS;
> }
> 
> 
> 
> 
> 
> Note that compiling with -Wall (always a good option) doesn't
> show any warning.
> 
> 
> 
> I read my advices again... makes me sound sooooo old! :-)
> 
> 
> 
> -- 
> Polytropon
> From Magdeburg, Germany
> Happy FreeBSD user since 4.0
> Andra moi ennepe, Mousa, ...

-- 
 Gary Kline  kl...@thought.org  http://www.thought.org  Public Service Unix
        http://jottings.thought.org   http://transfinite.thought.org
    The 2.41a release of Jottings: http://jottings.thought.org/index.php

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to