[devel] I: temporary file handling: C coding guideline

Stanislav Ievlev =?iso-8859-1?q?inger_=CE=C1_altlinux=2Eorg?=
Вт Июн 3 13:15:06 MSD 2003


On Tue, Jun 03, 2003 at 12:17:29PM +0400, Dmitry V. Levin wrote:
> Greetings!
> 
> Я планирую добавить "C coding guideline" в дополнение к нынешнему shell
> coding guideline из SPP:
> 
> #define _GNU_SOURCE
> 
> #include <stdio.h>
> #include <error.h>
> #include <errno.h>
> #include <stdlib.h>
> #include <unistd.h>
> 
> ...
> char *fname;
> int fd;
> FILE *fp;
> 
> if (asprintf (&fname, "%s/progname.XXXXXX", getenv ("TMPDIR") ?: P_tmpdir) < 0)
> 	error (EXIT_FAILURE, errno, "asprintf");
> 
> if ((fd = mkstemp (fname)) < 0)
> 	error (EXIT_FAILURE, errno, "mkstemp: %s", fname);
> 
> if (unlink (fname) < 0)
> 	error (EXIT_FAILURE, errno, "unlink: %s", fname);
> 
> if ((fp = fdopen (fd, "w+")) == NULL)
> 	error (EXIT_FAILURE, errno, "fdopen: %s", fname);
> 
> ...
> 
> if (fclose (fp))
> 	error (EXIT_FAILURE, errno, "fclose: %s", fname);
> 
> free (fname);
> fname = NULL;
> 
> Комментарии приветствуются.
Хочется man-page по asprintf.
Я тут не очень понял про коды возврата.
0 это тоже будет ошибкой в данном случае?

Ещё надо бы наверное portable вариант без gcc-змов. Это потребуется всем
мантейнерам которые захотят убедить авторов в своём патче.
> 
> 
> --
> ldv





Подробная информация о списке рассылки Devel