patches/unison-01-port-sol.diff
author jurikm
Sun, 12 Feb 2012 14:04:10 +0000
changeset 8245 383896da4129
parent 5 064fd4782f6e
permissions -rw-r--r--
SFEsauerbraten.spec: add IPS package name
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     1
Index: ChangeLog
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     2
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     3
RCS file: ChangeLog,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     4
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     5
retrieving revision 1.4
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     6
diff -u -r1.1 -r1.4
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     7
--- ChangeLog	25 Apr 2006 04:23:47 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     8
+++ ChangeLog	26 Apr 2006 11:14:24 -0000	1.4
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
     9
@@ -0,0 +1,24 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    10
+2006-04-26 Jimmy Yin <[email protected]>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    11
+	add -logtostdout arg to unison
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    12
+	if this arg is added with unison, unison would output the log msg to stdout at the same with logfile.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    13
+	* ubase/trace.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    14
+	* ubase/trace.mli
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    15
+	* uitext/ml 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    16
+2006-04-26 Jimmy Yin <[email protected]>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    17
+        SyncIt need the UnisonSyncLogMsg to detemine the sync status.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    18
+        The patch makes unison output msg to stdout the same time as output msg to logfile.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    19
+        Unison output the percentage of syncing for each file, but it do not flush the stdout.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    20
+        The patch add "\n" to percentage message to flush the stdout. Then syncit could get percentage message.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    21
+        * ubase/trace.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    22
+        * uitext.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    23
+2006-04-25 Jimmy Yin <[email protected]>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    24
+        Solaris do not support openpty and forkpty functions
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    25
+        The same functionality could be implemented by solaris pty driver and pts drive.
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    26
+        * pty.c
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    27
+2006-04-25 Jimmy Yin <[email protected]>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    28
+        add a new args to unison : sshpassword
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    29
+        it is used to give the ssh password to unison
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    30
+        when unison get the password, it do not ask user to input password during syncing
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    31
+        * terminal.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    32
+        * terminal.mli
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    33
+        * remote.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    34
Index: pty.c
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    35
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    36
RCS file: pty.c,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    37
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    38
retrieving revision 1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    39
diff -u -r1.1 -r1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    40
--- pty.c	19 Apr 2006 15:42:06 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    41
+++ pty.c	24 Apr 2006 11:59:59 -0000	1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    42
@@ -9,6 +9,8 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    43
 extern void unix_error (int errcode, char * cmdname, value arg) Noreturn;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    44
 extern void uerror (char * cmdname, value arg) Noreturn;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    45
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    46
+#define SOLARIS 1        //for solaris only, if no solaris, remote it
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    47
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    48
 // openpty
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    49
 #if defined(__linux)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    50
 #include <pty.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    51
@@ -25,6 +27,14 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    52
 #define HAS_OPENPTY 1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    53
 #endif
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    54
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    55
+#ifdef SOLARIS
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    56
+#include <fcntl.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    57
+#include <sys/termios.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    58
+#include <unistd.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    59
+#include <stropts.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    60
+#define HAS_OPENPTY 1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    61
+#endif
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    62
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    63
 #ifdef HAS_OPENPTY
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    64
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    65
 #include <sys/ioctl.h>
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    66
@@ -32,16 +42,31 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    67
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    68
 CAMLprim value setControllingTerminal(value fdVal) {
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    69
   int fd = Int_val(fdVal);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    70
+#ifdef SOLARIS
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    71
+  ioctl(fd, I_PUSH, "ptem");       /* push ptem */
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    72
+  ioctl(fd, I_PUSH, "ldterm");     /* push ldterm*/
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    73
+#else
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    74
   if (ioctl(fd, TIOCSCTTY, (char *) 0) < 0)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    75
     uerror("ioctl", (value) 0);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    76
+#endif
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    77
   return Val_unit;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    78
 }
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    79
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    80
 /* c_openpty: unit -> (int * Unix.file_descr) */
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    81
 CAMLprim value c_openpty() {
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    82
   int master,slave;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    83
+#ifdef SOLARIS
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    84
+  char * slavename;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    85
+  extern char *ptsname();
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    86
+  master = open("/dev/ptmx", O_RDWR);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    87
+  grantpt(master);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    88
+  unlockpt(master);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    89
+  slavename = ptsname(master);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    90
+  slave = open(slavename, O_RDWR);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    91
+#else
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    92
   if (openpty(&master,&slave,NULL,NULL,NULL) < 0)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    93
     uerror("openpty", (value) 0);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    94
+#endif
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    95
   value pair = alloc_tuple(2);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    96
   Store_field(pair,0,Val_int(master));
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    97
   Store_field(pair,1,Val_int(slave));
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    98
Index: remote.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
    99
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   100
RCS file: remote.ml,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   101
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   102
retrieving revision 1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   103
diff -u -r1.1 -r1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   104
--- remote.ml	19 Apr 2006 15:39:42 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   105
+++ remote.ml	25 Apr 2006 13:10:37 -0000	1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   106
@@ -422,6 +422,15 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   107
      ^ "command used to invoke the remote server. "
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   108
      )
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   109
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   110
+let sshpassword =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   111
+  Prefs.createString "sshpassword" ""
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   112
+    "recommended ssh password for remote shell command"
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   113
+    ("The string value of this preference will be passed as additional "
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   114
+     ^ "arguments (besides the host name and the name of the Unison "
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   115
+     ^ "executable on the remote system) to the \\verb|ssh| "
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   116
+     ^ "command used to invoke the remote server. "
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   117
+     )
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   118
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   119
 let serverCmd =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   120
   Prefs.createString "servercmd" ""
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   121
     ("name of " ^ Uutil.myName ^ " executable on remote server")
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   122
@@ -860,6 +869,9 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   123
       Prefs.read rshargs
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   124
     else
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   125
       "") in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   126
+  let shellCmdPwd =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   127
+      Prefs.read sshpassword
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   128
+      in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   129
   let preargs =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   130
       ([shellCmd]@userArgs@portArgs@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   131
        [host]@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   132
@@ -890,20 +902,30 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   133
   debug (fun ()-> Util.msg "Shell connection: %s (%s)\n"
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   134
            shellCmd (String.concat ", " args));
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   135
   let term =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   136
-    match termInteract with
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   137
-      None ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   138
-        ignore (Unix.create_process shellCmd argsarray i1 o2 Unix.stderr);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   139
-        None
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   140
-    | Some callBack ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   141
-        fst (Terminal.create_session shellCmd argsarray i1 o2 Unix.stderr)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   142
-  in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   143
+    (if shellCmdPwd = "" then
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   144
+      match termInteract with
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   145
+        None ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   146
+          ignore (Unix.create_process shellCmd argsarray i1 o2 Unix.stderr);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   147
+          None
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   148
+      | Some callBack ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   149
+          fst (Terminal.create_session shellCmd argsarray i1 o2 Unix.stderr)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   150
+    else
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   151
+      fst (Terminal.create_session shellCmd argsarray i1 o2 Unix.stderr) 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   152
+  ) in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   153
   Unix.close i1; Unix.close o2;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   154
-  begin match term, termInteract with
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   155
-  | Some fdTerm, Some callBack ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   156
+  (if shellCmdPwd = "" then begin match term, termInteract with
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   157
+    | Some fdTerm, Some callBack ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   158
       Terminal.handlePasswordRequests fdTerm (callBack rootName)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   159
-  | _ ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   160
+    | _ ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   161
       ()
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   162
-  end;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   163
+    end
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   164
+  else begin match term with
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   165
+    | Some fdTerm ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   166
+      Terminal.handlePasswordRequestsWithPassword fdTerm shellCmdPwd
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   167
+    | _ ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   168
+        ()
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   169
+    end);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   170
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   171
   initConnection i2 o1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   172
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   173
 let canonizeOnServer =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   174
Index: terminal.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   175
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   176
RCS file: terminal.ml,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   177
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   178
retrieving revision 1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   179
diff -u -r1.1 -r1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   180
--- terminal.ml	19 Apr 2006 15:39:42 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   181
+++ terminal.ml	25 Apr 2006 13:10:37 -0000	1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   182
@@ -244,3 +244,32 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   183
         end)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   184
   in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   185
   ignore (loop ())
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   186
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   187
+(* Read messages from the terminal and input the password  *)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   188
+let handlePasswordRequestsWithPassword fdTerm sshpwd =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   189
+  Unix.set_nonblock fdTerm;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   190
+  let buf = String.create 10000 in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   191
+  let rec loop () =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   192
+    Lwt_unix.read fdTerm buf 0 10000 >>= (fun len ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   193
+      if len = 0 then
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   194
+        (* The remote end is dead *)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   195
+        Lwt.return ()
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   196
+      else if len = 10 then (* "Password:\n"*)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   197
+        begin
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   198
+          let response = sshpwd in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   199
+          Lwt_unix.write fdTerm
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   200
+            (response ^ "\n") 0 (String.length response + 1)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   201
+              >>= (fun _ ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   202
+          loop ())
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   203
+        end
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   204
+      else
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   205
+        begin
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   206
+          let response = "yes" in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   207
+          Lwt_unix.write fdTerm
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   208
+            (response ^ "\n") 0 (String.length response + 1)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   209
+              >>= (fun _ ->
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   210
+          loop ())
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   211
+        end )
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   212
+  in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   213
+  ignore (loop ())
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   214
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   215
Index: terminal.mli
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   216
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   217
RCS file: terminal.mli,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   218
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   219
retrieving revision 1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   220
diff -u -r1.1 -r1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   221
--- terminal.mli	19 Apr 2006 15:39:42 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   222
+++ terminal.mli	25 Apr 2006 13:10:37 -0000	1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   223
@@ -17,6 +17,9 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   224
 val handlePasswordRequests :
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   225
   Unix.file_descr -> (string -> string) -> unit
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   226
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   227
+val handlePasswordRequestsWithPassword :
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   228
+  Unix.file_descr -> string -> unit
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   229
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   230
 (* For recognizing messages from OpenSSH *)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   231
 val password : string -> bool
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   232
 val authenticity : string -> bool
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   233
Index: uitext.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   234
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   235
RCS file: uitext.ml,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   236
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   237
retrieving revision 1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   238
diff -u -r1.1 -r1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   239
--- uitext.ml	19 Apr 2006 15:39:42 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   240
+++ uitext.ml	26 Apr 2006 11:12:27 -0000	1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   241
@@ -374,8 +374,12 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   242
         let t = truncate ((t1 -. t0) *. (100. -. v) /. v +. 0.5) in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   243
         Format.sprintf "%02d:%02d" (t / 60) (t mod 60)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   244
     in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   245
+    let isetaflush =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   246
+      if (Prefs.read Trace.logtostdout) then "\n"
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   247
+      else ""
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   248
+    in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   249
     Util.set_infos
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   250
-      (Format.sprintf "%s  %s ETA" (Util.percent2string v) remTime)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   251
+      (Format.sprintf "%s  %s ETA%s" (Util.percent2string v) remTime isetaflush) 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   252
   in
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   253
   if not (Prefs.read Trace.terse) && (Prefs.read Trace.debugmods = []) then
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   254
     Uutil.setProgressPrinter showProgress;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   255
Index: ubase/trace.ml
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   256
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   257
RCS file: ubase/trace.ml,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   258
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   259
retrieving revision 1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   260
diff -u -r1.1 -r1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   261
--- ubase/trace.ml	19 Apr 2006 15:34:06 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   262
+++ ubase/trace.ml	26 Apr 2006 11:12:27 -0000	1.3
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   263
@@ -83,6 +83,11 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   264
      \\verb|unison.log| in your HOME directory.  Set this preference if
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   265
      you prefer another file."
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   266
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   267
+let logtostdout =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   268
+  Prefs.createBool "logtostdout" false
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   269
+    "Log to stdout, for syncit parse only"
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   270
+    "if you are not using syncit, do not add this arg."
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   271
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   272
 let logch = ref None
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   273
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   274
 let rec getLogch() =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   275
@@ -103,6 +108,9 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   276
 let sendLogMsgsToStderr = ref true
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   277
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   278
 let writeLog s =
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   279
+  if Prefs.read logtostdout then begin
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   280
+    Printf.printf "%s\n" s
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   281
+  end;
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   282
   if !sendLogMsgsToStderr then Util.msg "%s" s
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   283
   else debug "" (fun() -> Util.msg "%s" s);
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   284
   if Prefs.read logging then begin
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   285
Index: ubase/trace.mli
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   286
===================================================================
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   287
RCS file: ubase/trace.mli,v
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   288
retrieving revision 1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   289
retrieving revision 1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   290
diff -u -r1.1 -r1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   291
--- ubase/trace.mli	19 Apr 2006 15:34:06 -0000	1.1
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   292
+++ ubase/trace.mli	26 Apr 2006 11:12:27 -0000	1.2
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   293
@@ -64,6 +64,8 @@
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   294
 (* Suppress all message printing *)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   295
 val terse : bool Prefs.t
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   296
 
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   297
+val logtostdout : bool Prefs.t
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   298
+
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   299
 (* Show a string to the user. *)
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   300
 val message : string -> unit
064fd4782f6e * SFEfile-replicator.spec, SFEsyncit.spec:
nonsea
parents:
diff changeset
   301