fd = mkstemps(tmpfil, (int) strlen(suffix));
#else /* ! HAVE_MKSTEMPS */
- /* Solaris 10, e.g. */
+ /* NetBSD, Solaris 10 */
if (pfx_in == NULL) {
tmpfil = concat(get_temp_dir(), "/nmhXXXXXX", NULL);
fd = mkstemp(tmpfil);
{
char *oldfilename = tmpfil;
-
tmpfil = concat(oldfilename, suffix, NULL);
- /* link(2) requires that the new path not exist. And if we
- have to resort to rename(2), at least try to remove a file
- that would be in the way. */
- if (unlink(tmpfil) != 0 && errno != ENOENT) {
- advise("unlink", "Failed to unlink \"%s\"", tmpfil);
+ if (rename(oldfilename, tmpfil) != 0) {
(void) unlink(oldfilename);
free(oldfilename);
free(tmpfil);
return NULL;
}
- /* link() doesn't always work, such as on Windows FAT
- filesystems. If it fails, try rename(). */
- if (link(oldfilename, tmpfil) != 0 &&
- rename(oldfilename, tmpfil) != 0) {
- (void) unlink(oldfilename);
- free(oldfilename);
- free(tmpfil);
- return NULL;
- }
-
- (void) unlink(oldfilename);
free(oldfilename);
}
#endif /* ! HAVE_MKSTEMPS */
exit(1);
} else {
+ remove_registered_files_atexit();
+
act.sa_handler = SIG_DFL;
(void) sigemptyset(&act.sa_mask);
act.sa_flags = 0;
(void) sigaction(sig, &act, 0);
- remove_registered_files_atexit();
-
(void) raise(sig);
}
}