Fixed dist(1): The link() must fail, because m_mktemp2() creates the file.
authormarkus schnalke <meillo@marmaro.de>
Thu, 9 Feb 2012 20:12:58 +0000 (21:12 +0100)
committermarkus schnalke <meillo@marmaro.de>
Thu, 9 Feb 2012 20:12:58 +0000 (21:12 +0100)
I've decided to take the easy way: simply copy.

uip/send.c

index 1529c0f..a90c6b2 100644 (file)
@@ -252,27 +252,17 @@ main(int argc, char **argv)
 
        if ((cp = getenv("mhdist")) && *cp && (distsw = atoi(cp)) && altmsg) {
                vec[vecp++] = "-dist";
-               distfile = getcpy(m_mktemp2(altmsg, invo_name, NULL, NULL));
-               if (link(altmsg, distfile) == NOTOK) {
-                       if (errno != EXDEV) {
-                               adios(distfile, "unable to link %s to",
-                                               altmsg);
-                       }
-                       free(distfile);
-                       distfile = getcpy(m_mktemp2(NULL, invo_name,
-                                       NULL, NULL));
-                       if ((in = open(altmsg, O_RDONLY)) == NOTOK) {
-                               adios(altmsg, "unable to open");
-                       }
-                       fstat(in, &st2);
-                       if ((out = creat(distfile, (int)st2.st_mode & 0777)) ==
-                                       NOTOK) {
-                               adios(distfile, "unable to write");
-                       }
-                       cpydata(in, out, altmsg, distfile);
-                       close(in);
-                       close(out);
+               if ((in = open(altmsg, O_RDONLY)) == NOTOK) {
+                       adios(altmsg, "unable to open for reading");
                }
+               fstat(in, &st2);
+               distfile = getcpy(m_mktemp2(NULL, invo_name, NULL, NULL));
+               if ((out = creat(distfile, (int)st2.st_mode & 0777))==NOTOK) {
+                       adios(distfile, "unable to open for writing");
+               }
+               cpydata(in, out, altmsg, distfile);
+               close(in);
+               close(out);
        } else {
                distfile = NULL;
        }