Samba 3: added Samba 3.0.24 sources
[tomato.git] / release / src / router / samba3 / packaging / Debian / debian-unstable / patches / smbmount-nomtab.patch
blobf7e9ce4f69af91c1e487ebb21701d737444a5b1e
1 diff -uNr samba-3.0alpha22.orig/source/client/smbmnt.c samba-3.0alpha22/source/client/smbmnt.c
2 --- samba-3.0alpha22.orig/source/client/smbmnt.c 2003-03-15 12:11:39.000000000 -0600
3 +++ samba-3.0alpha22/source/client/smbmnt.c 2003-03-15 12:11:49.000000000 -0600
4 @@ -28,6 +28,7 @@
5 static uid_t mount_uid;
6 static gid_t mount_gid;
7 static int mount_ro;
8 +static int no_mtab;
9 static unsigned mount_fmask;
10 static unsigned mount_dmask;
11 static int user_mount;
12 @@ -40,6 +41,7 @@
13 printf("Usage: smbmnt mount-point [options]\n");
14 printf("Version %s\n\n",VERSION);
15 printf("-s share share name on server\n"
16 + "-n don't update /etc/mtab\n"
17 "-r mount read-only\n"
18 "-u uid mount as uid\n"
19 "-g gid mount as gid\n"
20 @@ -54,7 +56,7 @@
22 int opt;
24 - while ((opt = getopt (argc, argv, "s:u:g:rf:d:o:")) != EOF)
25 + while ((opt = getopt (argc, argv, "s:u:g:nrf:d:o:")) != EOF)
27 switch (opt)
29 @@ -71,6 +73,9 @@
30 mount_gid = strtol(optarg, NULL, 0);
32 break;
33 + case 'n':
34 + no_mtab = 1;
35 + break;
36 case 'r':
37 mount_ro = 1;
38 break;
39 @@ -274,36 +279,38 @@
40 return -1;
43 - if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1)
44 - {
45 - fprintf(stderr, "Can't get "MOUNTED"~ lock file");
46 - return 1;
47 - }
48 - close(fd);
49 + if (!no_mtab) {
50 + if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1)
51 + {
52 + fprintf(stderr, "Can't get "MOUNTED"~ lock file");
53 + return 1;
54 + }
55 + close(fd);
57 - if ((mtab = setmntent(MOUNTED, "a+")) == NULL)
58 - {
59 - fprintf(stderr, "Can't open " MOUNTED);
60 - return 1;
61 - }
62 + if ((mtab = setmntent(MOUNTED, "a+")) == NULL)
63 + {
64 + fprintf(stderr, "Can't open " MOUNTED);
65 + return 1;
66 + }
68 - if (addmntent(mtab, &ment) == 1)
69 - {
70 - fprintf(stderr, "Can't write mount entry");
71 - return 1;
72 - }
73 - if (fchmod(fileno(mtab), 0644) == -1)
74 - {
75 - fprintf(stderr, "Can't set perms on "MOUNTED);
76 - return 1;
77 - }
78 - endmntent(mtab);
79 + if (addmntent(mtab, &ment) == 1)
80 + {
81 + fprintf(stderr, "Can't write mount entry");
82 + return 1;
83 + }
84 + if (fchmod(fileno(mtab), 0644) == -1)
85 + {
86 + fprintf(stderr, "Can't set perms on "MOUNTED);
87 + return 1;
88 + }
89 + endmntent(mtab);
91 - if (unlink(MOUNTED"~") == -1)
92 - {
93 - fprintf(stderr, "Can't remove "MOUNTED"~");
94 - return 1;
95 - }
96 + if (unlink(MOUNTED"~") == -1)
97 + {
98 + fprintf(stderr, "Can't remove "MOUNTED"~");
99 + return 1;
103 return 0;
105 diff -uNr samba-3.0alpha22.orig/source/client/smbmount.c samba-3.0alpha22/source/client/smbmount.c
106 --- samba-3.0alpha22.orig/source/client/smbmount.c 2003-03-15 12:04:29.000000000 -0600
107 +++ samba-3.0alpha22/source/client/smbmount.c 2003-03-15 12:15:10.000000000 -0600
108 @@ -48,6 +48,7 @@
109 static int mount_ro;
110 static unsigned mount_fmask;
111 static unsigned mount_dmask;
112 +static BOOL no_mtab = False;
113 static BOOL use_kerberos;
114 /* TODO: Add code to detect smbfs version in kernel */
115 static BOOL status32_smbfs = False;
116 @@ -273,6 +274,9 @@
117 return;
120 + if (no_mtab)
121 + return;
123 if ((fd = open(MOUNTED"~", O_RDWR|O_CREAT|O_EXCL, 0600)) == -1) {
124 DEBUG(0,("%d: Can't get "MOUNTED"~ lock file", sys_getpid()));
125 return;
126 @@ -467,6 +471,9 @@
127 args[i++] = "-s";
128 args[i++] = svc2;
130 + if (no_mtab) {
131 + args[i++] = "-n";
133 if (mount_ro) {
134 args[i++] = "-r";
136 @@ -662,7 +669,7 @@
137 ****************************************************************************/
138 static void usage(void)
140 - printf("Usage: mount.smbfs service mountpoint [-o options,...]\n");
141 + printf("Usage: mount.smbfs service mountpoint [-n] [-o options,...]\n");
143 printf("Version %s\n\n",VERSION);
145 @@ -740,8 +747,13 @@
146 argc -= 2;
147 argv += 2;
149 - opt = getopt(argc, argv, "o:");
150 - if(opt != 'o') {
151 + opt = getopt(argc, argv, "no:");
152 + if (opt == 'n') {
153 + DEBUG(3,("No mtab!\n"));
154 + no_mtab = True;
155 + opt = getopt(argc, argv, "o:");
157 + if (opt != 'o') {
158 return;