Bugid                             : 6344436
Synopsis                        : *mv* gives cryptic error when applied to
unix domain sockets
Category/Subcategory     : utility:file

Path   : /solarisws/usr/src/cmd/mv/mv.c

this problem exist for unix domain sockets since 'mknod' (used in mv.c)
cannot create socket files.

value for S_IFSOCK = 49152(int)
           = c000(hex)

fix is, to check whether the file is a unix domain socket or not.



____________________________________________________________________________________________________

bash-3.00# diff -u mv.c.org mv.c
--- mv.c.org    Tue Oct  2 20:15:24 2007
+++ mv.c        Sat Dec 29 11:15:49 2007
@@ -898,11 +898,21 @@
                        }
                        goto cleanup;
                }
-               (void) fprintf(stderr,
-                   gettext("%s: %s: unknown file type 0x%x\n"), cmd,
-                   source, (s1.st_mode & S_IFMT));
-               return (1);

+               if (( st.st_mode & S_IFMT) == S_IFSOCK) {
+                       (void) fprintf(stderr,
+                       gettext("%s: %s: cannot create unix socket file
\n"), cmd, source);
+
+                       return (1);
+               }
+               else {
+                       (void) fprintf(stderr,
+                       gettext("%s: %s: unknown file type 0x%x\n"), cmd,
+                       source, (s1.st_mode & S_IFMT));
+
+                       return (1);
+               }
+
 cleanup:
                if (unlink(source) < 0) {
                        (void) unlink(target);

-------------------------------------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.opensolaris.org/pipermail/request-sponsor/attachments/20080107/9c722991/attachment.html>

Reply via email to