sync from 3.0
authorGerald Carter <jerry@samba.org>
Sat, 31 Jan 2004 18:31:54 +0000 (18:31 +0000)
committerGerald Carter <jerry@samba.org>
Sat, 31 Jan 2004 18:31:54 +0000 (18:31 +0000)
WHATSNEW.txt
source/param/loadparm.c
source/smbd/reply.c

index 0779249a5a0b8bc4b2b5caa4a95c7d06f299c287..07b01f5827518574aed10c7ccc09305672b956ab 100644 (file)
@@ -77,6 +77,11 @@ o   Volker Lendecke <vl@samba.org>
       over users with getpwent().  This broke on glibc 2.3.2.
 
 
+o   Jianliang Lu <j.lu@tiesse.com>
+    * BUG 101: set the SV_TYPE_PRINTQ_SERVER flag in host announcement 
+      packet.
+
+
 o   Stefan Metzmacher <metze@samba.org>
     * Add SIGABRT to fault handling in order to catch got a 
       backtrace if an error occurs the OpenLDAP client libs.
index 5763d9deda9f243e3ac6e0dcfceeae3d49f07e57..29845a51e0cb163930c220601bd342394b4e60e2 100644 (file)
@@ -2386,8 +2386,6 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService)
 
        DEBUG(3, ("adding printer service %s\n", pszPrintername));
 
-       update_server_announce_as_printserver();
-
        return (True);
 }
 
@@ -2739,56 +2737,6 @@ static BOOL handle_netbios_aliases(const char *pszParmValue, char **ptr)
        return set_netbios_aliases((const char **)Globals.szNetbiosAliases);
 }
 
-/***************************************************************************
- Do the work of sourcing in environment variable/value pairs.
-***************************************************************************/
-
-static BOOL source_env(char **lines)
-{
-       char *varval;
-       size_t len;
-       int i;
-       char *p;
-
-       for (i = 0; lines[i]; i++) {
-               char *line = lines[i];
-
-               if ((len = strlen(line)) == 0)
-                       continue;
-
-               if (line[len - 1] == '\n')
-                       line[--len] = '\0';
-
-               if ((varval = malloc(len + 1)) == NULL) {
-                       DEBUG(0, ("source_env: Not enough memory!\n"));
-                       return (False);
-               }
-
-               DEBUG(4, ("source_env: Adding to environment: %s\n", line));
-               strncpy(varval, line, len);
-               varval[len] = '\0';
-
-               p = strchr_m(line, (int)'=');
-               if (p == NULL) {
-                       DEBUG(4, ("source_env: missing '=': %s\n", line));
-                       continue;
-               }
-
-               if (putenv(varval)) {
-                       DEBUG(0, ("source_env: Failed to put environment variable %s\n",
-                              varval));
-                       continue;
-               }
-
-               *p = '\0';
-               p++;
-               DEBUG(4, ("source_env: getting var %s = %s\n", line, getenv(line)));
-       }
-
-       DEBUG(4, ("source_env: returning successfully\n"));
-       return (True);
-}
-
 /***************************************************************************
  Handle the include operation.
 ***************************************************************************/
@@ -3668,15 +3616,6 @@ void lp_add_one_printer(char *name, char *comment)
        }
 }
 
-/***************************************************************************
- Announce ourselves as a print server.
-***************************************************************************/
-
-void update_server_announce_as_printserver(void)
-{
-       default_server_announce |= SV_TYPE_PRINTQ_SERVER;       
-}
-
 /***************************************************************************
  Have we loaded a services file yet?
 ***************************************************************************/
@@ -4041,6 +3980,12 @@ static void set_default_server_announce_type(void)
        default_server_announce |= SV_TYPE_SERVER;
        default_server_announce |= SV_TYPE_SERVER_UNIX;
 
+       /* note that the flag should be set only if we have a 
+          printer service but nmbd doesn't actually load the 
+          services so we can't tell   --jerry */
+
+       default_server_announce |= SV_TYPE_PRINTQ_SERVER;
+
        switch (lp_announce_as()) {
                case ANNOUNCE_AS_NT_SERVER:
                        default_server_announce |= SV_TYPE_SERVER_NT;
index 3752507493073a520a6fd4aaeae5dc24c7a28bc9..c4ff77bd8664a8fece6c5fb4cf24141e8d2711ff 100644 (file)
@@ -3013,19 +3013,12 @@ NTSTATUS mkdir_internal(connection_struct *conn, pstring directory)
                ret = vfs_MkDir(conn,directory,unix_mode(conn,aDIR,directory));
        
        if (ret == -1) {
-               NTSTATUS nterr = NT_STATUS_OK;
                if(errno == ENOENT) {
-                       unix_ERR_class = ERRDOS;
-                       if (bad_path) {
-                               unix_ERR_code = ERRbadpath;
-                               nterr = NT_STATUS_OBJECT_PATH_NOT_FOUND;
-                       } else {
-                               unix_ERR_code = ERRbadfile;
-                               nterr = NT_STATUS_OBJECT_NAME_NOT_FOUND;
-                       }
+                       if (bad_path)
+                               return NT_STATUS_OBJECT_PATH_NOT_FOUND;
+                       else
+                               return NT_STATUS_OBJECT_NAME_NOT_FOUND;
                }
-               if (!NT_STATUS_IS_OK(nterr))
-                       return nterr;
                return map_nt_error_from_unix(errno);
        }