Why?? (prog question)

William Gordon Rutherdale will.rutherdale at utoronto.ca
Tue Mar 31 05:05:23 PDT 2009


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.
>
> 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.
>
> 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.
>
> 5. This is highly debatable: Use a good style for { and }.
>
> 6. Use delimiters around operators, e. g. buf[strlen(buf) - 1]
>    instead of buf[strlen(buf)-1]; increases readability.
>
> Here is the program again, with some stylistic modifications
> and the "correct" (read: recommended, usual) exit code handling:
>
>
>
>
> /*
>  * 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! :-)
>
>
>
>   
Tabbing is the worst form of indentation.  It is *much* better to use 
spaces consistently.

-Will



More information about the freebsd-questions mailing list