Initial import
[samba] / debian / patches / smbmount-nomtab.patch
1 Index: samba-3.0.21c/source/client/smbmnt.c
2 ===================================================================
3 --- samba-3.0.21c.orig/source/client/smbmnt.c   2006-02-25 11:58:25.369473493 +0100
4 +++ samba-3.0.21c/source/client/smbmnt.c        2006-02-25 11:58:26.169312103 +0100
5 @@ -44,6 +44,7 @@
6  static uid_t mount_uid;
7  static gid_t mount_gid;
8  static int mount_ro;
9 +static int no_mtab;
10  static unsigned mount_fmask;
11  static unsigned mount_dmask;
12  static int user_mount;
13 @@ -56,6 +57,7 @@
14          printf("Usage: smbmnt mount-point [options]\n");
15         printf("Version %s\n\n",SAMBA_VERSION_STRING);
16          printf("-s share       share name on server\n"
17 +               "-n             don't update /etc/mtab\n"
18                 "-r             mount read-only\n"
19                 "-u uid         mount as uid\n"
20                 "-g gid         mount as gid\n"
21 @@ -70,7 +72,7 @@
22  {
23          int opt;
24  
25 -        while ((opt = getopt (argc, argv, "s:u:g:rf:d:o:")) != EOF)
26 +        while ((opt = getopt (argc, argv, "s:u:g:nrf:d:o:")) != EOF)
27         {
28                  switch (opt)
29                 {
30 @@ -87,6 +89,9 @@
31                                 mount_gid = strtol(optarg, NULL, 0);
32                         }
33                          break;
34 +               case 'n':
35 +                       no_mtab = 1;
36 +                       break;
37                  case 'r':
38                          mount_ro = 1;
39                          break;
40 @@ -291,36 +296,38 @@
41                 return -1;
42         }
43         
44 -        if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1)
45 -        {
46 -                fprintf(stderr, "Can't get "MOUNTED"~ lock file");
47 -                return 1;
48 -        }
49 -        close(fd);
50 +       if (!no_mtab) {
51 +               if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1)
52 +               {
53 +                       fprintf(stderr, "Can't get "MOUNTED"~ lock file");
54 +                       return 1;
55 +               }
56 +               close(fd);
57         
58 -        if ((mtab = setmntent(MOUNTED, "a+")) == NULL)
59 -        {
60 -                fprintf(stderr, "Can't open " MOUNTED);
61 -                return 1;
62 -        }
63 +               if ((mtab = setmntent(MOUNTED, "a+")) == NULL)
64 +               {
65 +                       fprintf(stderr, "Can't open " MOUNTED);
66 +                       return 1;
67 +               }
68  
69 -        if (addmntent(mtab, &ment) == 1)
70 -        {
71 -                fprintf(stderr, "Can't write mount entry");
72 -                return 1;
73 -        }
74 -        if (fchmod(fileno(mtab), 0644) == -1)
75 -        {
76 -                fprintf(stderr, "Can't set perms on "MOUNTED);
77 -                return 1;
78 -        }
79 -        endmntent(mtab);
80 +               if (addmntent(mtab, &ment) == 1)
81 +               {
82 +                       fprintf(stderr, "Can't write mount entry");
83 +                       return 1;
84 +               }
85 +               if (fchmod(fileno(mtab), 0644) == -1)
86 +               {
87 +                       fprintf(stderr, "Can't set perms on "MOUNTED);
88 +                       return 1;
89 +               }
90 +               endmntent(mtab);
91  
92 -        if (unlink(MOUNTED"~") == -1)
93 -        {
94 -                fprintf(stderr, "Can't remove "MOUNTED"~");
95 -                return 1;
96 -        }
97 +               if (unlink(MOUNTED"~") == -1)
98 +               {
99 +                       fprintf(stderr, "Can't remove "MOUNTED"~");
100 +                       return 1;
101 +               }
102 +       }
103  
104         return 0;
105  }      
106 Index: samba-3.0.21c/source/client/smbmount.c
107 ===================================================================
108 --- samba-3.0.21c.orig/source/client/smbmount.c 2006-02-25 11:58:23.681814024 +0100
109 +++ samba-3.0.21c/source/client/smbmount.c      2006-02-25 11:58:26.184309077 +0100
110 @@ -46,6 +46,7 @@
111  static int mount_ro;
112  static unsigned mount_fmask;
113  static unsigned mount_dmask;
114 +static BOOL no_mtab = False;
115  static BOOL use_kerberos;
116  /* TODO: Add code to detect smbfs version in kernel */
117  static BOOL status32_smbfs = False;
118 @@ -271,6 +272,9 @@
119                  return;
120          }
121  
122 +       if (no_mtab)
123 +               return;
124 +
125          if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1) {
126                  DEBUG(0,("%d: Can't get "MOUNTED"~ lock file", sys_getpid()));
127                  return;
128 @@ -468,6 +472,9 @@
129         args[i++] = "-s";
130         args[i++] = svc2;
131  
132 +       if (no_mtab) {
133 +               args[i++] = "-n";
134 +       }
135         if (mount_ro) {
136                 args[i++] = "-r";
137         }
138 @@ -663,7 +670,7 @@
139  ****************************************************************************/
140  static void usage(void)
141  {
142 -       printf("Usage: mount.smbfs service mountpoint [-o options,...]\n");
143 +       printf("Usage: mount.smbfs service mountpoint [-n] [-o options,...]\n");
144  
145         printf("Version %s\n\n",SAMBA_VERSION_STRING);
146  
147 @@ -741,8 +748,13 @@
148         argc -= 2;
149         argv += 2;
150  
151 -       opt = getopt(argc, argv, "o:");
152 -       if(opt != 'o') {
153 +       opt = getopt(argc, argv, "no:");
154 +       if (opt == 'n') {
155 +               DEBUG(3,("No mtab!\n"));
156 +               no_mtab = True;
157 +               opt = getopt(argc, argv, "o:");
158 +       }
159 +       if (opt != 'o') {
160                 return;
161         }
162