パスワードを忘れた? アカウント作成
421188 journal

shogosの日記: おめ

日記 by shogos

日記をまたもやセーブして無くて正月のがないわ(笑

まぁふつうに職場で年を越してそのままふらついたりしてましたわ。

今日は仕事。sambaをdaemontoolsでなんとか動かしてやろうと躍起になりました。smbdはtcpserver経由でふつうに起動できます。

問題はnmbdだが、こいつはたちが悪いことに起動すると勝手にバックグラウンドに行ってしまうのでdaemontoolsでは扱えない。daemontoolsのなかにfghackというプログラムでバックグラウンドに行くプログラムを強制的に阻止することができる。ただし、これでも制御できない物もある・・・。nmbdは「ただし」に当てはまるプログラムだった・・。(怒

そういうわけでしばし事例を探してみると・・・。今7:31 googleが落っこちた?・・・7:37直った(笑

探してみると、パッチが有りました。2.2.0用なので日本語版にはリジェクトしましたが手動で当ててコンパイルすると、うまくいったようです。

誰も見ないだろうけど防備録に乗せておくか。
---------------------------------------------------
diff -ur samba-2.0.10-ja-1.2.orig/source/nmbd/nmbd.c samba-2.0.10-ja-1.2/source/
nmbd/nmbd.c > nmbd-ja.diff
--- samba-2.0.10-ja-1.2.orig/source/nmbd/nmbd.c Fri May 4 04:11:43 2001
+++ samba-2.0.10-ja-1.2/source/nmbd/nmbd.c Sat Jan 5 04:27:41 2002
@@ -46,6 +46,9 @@
  /* are we running as a daemon ? */
  static BOOL is_daemon = False;

+/* run in foreground */
+static BOOL in_foreground = False;
+
  /* have we found LanMan clients yet? */
  BOOL found_lm_clients = False;

@@ -616,6 +619,7 @@
      printf( "Usage: %s [-DaohV] [-H lmhosts file] [-d debuglevel] [-l log basenam
e]\n", pname );
      printf( " [-n name] [-p port] [-s configuration file]\n" );
      printf( "\t-D Become a daemon\n" );
+ printf( "\t-F Execute in foreground\n" );
      printf( "\t-a Append to log file (default)\n" );
      printf( "\t-o Overwrite log file, don't append\n" );
      printf( "\t-h Print usage\n" );
@@ -695,7 +699,7 @@
  #endif /* MEM_MAN */

      while( EOF !=
- (opt = getopt( argc, argv, "Vaos:T:I:C:bAi:B:N:Rn:l:d:Dp:hSH:G:f:" ))
)
+ (opt = getopt( argc, argv, "Vaos:T:I:C:bAB:N:Rn:l:d:Dp:hSH:G:f:F" )) )
          {
              switch (opt)
                  {
@@ -728,6 +732,9 @@
                  case 'D':
                      is_daemon = True;
                      break;
+ case 'F':
+ in_foreground = True;
+ break;
                  case 'd':
                      DEBUGLEVEL = atoi(optarg);
                      break;
@@ -784,7 +791,7 @@
          is_daemon = True;
      }

- if (is_daemon)
+ if (!in_foreground && is_daemon)
      {
          DEBUG( 2, ( "Becoming a daemon.\n" ) );
          become_daemon();

samba-2.0.10-ja-1.2.orig/source/smbd/server.c samba-2.0.10-ja-1.2/source/smbd/se
rver.c > server-ja.diff
--- samba-2.0.10-ja-1.2.orig/source/smbd/server.c Fri May 4 04:11:44 2001
+++ samba-2.0.10-ja-1.2/source/smbd/server.c Sat Jan 5 04:27:54 2002
@@ -480,6 +480,7 @@
          printf("Usage: %s [-DaoPh?V] [-d debuglevel] [-l log basename] [-p port]
\n", pname);
          printf(" [-O socket options] [-s services file]\n");
          printf("\t-D Become a daemon\n");
+ printf("\t-F Execute in foreground\n");
          printf("\t-a Append to log file (default)\n");
          printf("\t-o Overwrite log file, don't append\n");
          printf("\t-P Passive only\n");
@@ -503,6 +504,7 @@
          extern BOOL append_log;
          /* shall I run as a daemon */
          BOOL is_daemon = False;
+ BOOL in_foreground = False;
          BOOL specified_logfile = False;
          int port = SMB_PORT;
          int opt;
@@ -518,7 +520,7 @@
                  argc--;
          }

- while ( EOF != (opt = getopt(argc, argv, "O:i:l:s:d:Dp:h?VPaof:")) )
+ while ( EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:h?Vaof:F")) )
                  switch (opt) {
                  case 'O':
                          pstrcpy(user_socket_options,optarg);
@@ -552,6 +554,10 @@
                          is_daemon = True;
                          break;

+ case 'F':
+ in_foreground = True;
+ break;
+
                  case 'd':
                          if (*optarg == 'A')
                                  DEBUGLEVEL = 10000;
@@ -708,7 +714,7 @@
                  is_daemon = True;
          }

- if (is_daemon) {
+ if (!in_foreground && is_daemon) {
                  DEBUG( 3, ( "Becoming a daemon.\n" ) );
                  become_daemon();
          }
fs:/usr/local/src#

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...