Репозитории ALT
S: | 0.2-alt10 |
5.1: | 0.2-alt9 |
4.1: | 0.2-alt7 |
4.0: | 0.2-alt7 |
+updates: | 0.2-alt7 |
3.0: | 0.2-alt4 |
Группа :: Работа с текстами
Пакет: ed
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: ed-0.2-alt-tmp.patch
Скачать
Скачать
--- ed-0.2.orig/buf.c 1994-11-19 15:37:59 +0300
+++ ed-0.2/buf.c 2002-09-01 16:30:02 +0400
@@ -54,7 +54,7 @@
sfseek = lp->seek;
if (fseek (sfp, sfseek, SEEK_SET) < 0)
{
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "fseek");
sprintf (errmsg, "Cannot seek temp file");
return NULL;
}
@@ -63,7 +63,7 @@
REALLOC (sfbuf, sfbufsz, len + 1, NULL);
if ((ct = fread (sfbuf, sizeof (char), len, sfp)) < 0 || ct != len)
{
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "fread");
sprintf (errmsg, "Cannot read temp file");
return NULL;
}
@@ -85,7 +85,7 @@
if ((lp = (line_t *) malloc (sizeof (line_t))) == NULL)
{
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "malloc");
sprintf (errmsg, "Out of memory");
return NULL;
}
@@ -103,7 +103,7 @@
{
if (fseek (sfp, 0L, SEEK_END) < 0)
{
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "fseek");
sprintf (errmsg, "Cannot seek temp file");
return NULL;
}
@@ -114,7 +114,7 @@
if ((ct = fwrite (cs, sizeof (char), len, sfp)) < 0 || ct != len)
{
sfseek = -1;
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "fwrite");
sprintf (errmsg, "Cannot write temp file");
return NULL;
}
@@ -194,26 +194,39 @@
extern int newline_added;
-char sfn[15] = ""; /* scratch file name */
+static char *sfn; /* scratch file name */
/* open_sbuf: open scratch file */
int
open_sbuf ()
{
- char *mktemp ();
- int u;
+ int fd;
isbinary = newline_added = 0;
- u = umask(077);
- strcpy (sfn, "/tmp/ed.XXXXXX");
- if (mktemp (sfn) == NULL || (sfp = fopen (sfn, "w+")) == NULL)
+ if (asprintf (&sfn, "%s/ed.XXXXXX", getenv ("TMPDIR") ?: P_tmpdir) < 0)
{
- fprintf (stderr, "%s: %s\n", sfn, strerror (errno));
+ error (0, errno, "asprintf");
+ sprintf (errmsg, "Cannot make temp file name");
+ sfn = 0;
+ return ERR;
+ }
+ if ((fd = mkstemp (sfn)) < 0)
+ {
+ error (0, errno, "%s", sfn);
sprintf (errmsg, "Cannot open temp file");
- umask(u);
+ free (sfn);
+ sfn = 0;
+ return ERR;
+ }
+ if (!(sfp = fdopen (fd, "w+")))
+ {
+ error (0, errno, "%s", sfn);
+ sprintf (errmsg, "Cannot open temp file");
+ close (fd);
+ free (sfn);
+ sfn = 0;
return ERR;
}
- umask(u);
return 0;
}
@@ -226,12 +239,18 @@
{
if (fclose (sfp) < 0)
{
- fprintf (stderr, "%s: %s\n", sfn, strerror (errno));
+ error (0, errno, "%s", sfn);
sprintf (errmsg, "Cannot close temp file");
+ free (sfn);
+ sfn = 0;
+ sfp = 0;
return ERR;
}
- sfp = NULL;
- unlink (sfn);
+ sfp = 0;
+ if (unlink (sfn) < 0)
+ error (0, errno, "unlink: %s", sfn);
+ free (sfn);
+ sfn = 0;
}
sfseek = seek_write = 0;
return 0;
@@ -246,7 +265,10 @@
if (sfp)
{
fclose (sfp);
+ sfp = 0;
unlink (sfn);
+ free (sfn);
+ sfn = 0;
}
exit (n);
}
@@ -276,7 +298,7 @@
if ((errmsg = (char *) malloc (ERRSZ)) == NULL ||
(old_filename = (char *) malloc (PATH_MAX + 1)) == NULL)
{
- fprintf (stderr, "%s\n", strerror (errno));
+ error (0, errno, "malloc");
quit (2);
}
old_filename[0] = '\0';