<vcs>
  <options>
    <scratch path="scratch" share="1" />
   <ccs cmd="si" >
     <file cmd="script:mks_file" script="mks_2.js" args="%F" stoppost="1">
        <extern name="mks_2.js"><![CDATA[function base_name(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function dir_name(path) {
    return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
}
   
function si(arg)
{
  // logstderr("si(" + arg + ")");
  var out =
    callExternal(
      "si " + arg
    );
  return out;
}

function mks_file(arg)
{
  var file = arg[0];
  var mem_info = si("memberinfo --batch " + file);
  var lines = mem_info.split("\r\n");
  // logstderr("memberinfo = " + mem_info); 
  if ( lines.length == 1 ) {
    lines = mem_info.split("\n");
  }
  var file_name = "";
  var sandbox_name = "";
  var line = "";
   // logstderr("memberinfo = " + lines);
  for ( i = 0; i < lines.length; i++ ) {
    line = lines[i];
    if ( line.indexOf("Member Name:") == 0 ) {
      file_name = line.substring(13);
    }
    if ( line.indexOf("Sandbox Name:") == 0 ) {
      sandbox_name = line.substring(14);
      n = sandbox_name.lastIndexOf("\\");
      if ( n < 0 ) {
        n = sandbox_name.lastIndexOf("/");
      }
      if ( n >= 0 ) {
        file_name = file_name.substring(n + 1);
      }
    }
  }

  var sandbox_info = si("sandboxinfo --sandbox=" + sandbox_name + " --batch");
  var project_name = "";
  lines = sandbox_info.split("\r\n");
  if ( lines.length == 1 ) {
    lines = sandbox_info.split("\n");
  }

  for ( i = 0; i < lines.length; i++ ) {
    line = lines[i];
    if ( line.indexOf("Project Name:") == 0 ) {
      project_name = line.substring(14);
    }
  }

  var prj_basename = base_name(project_name);
  var prj_dirname = dir_name(project_name);
  var filespec = prj_dirname + '/' + file_name;
/* 
  logstderr("filepec = " + filespec);
  logstderr("file_name = " + file_name);
  logstderr("sandbox_name = " + sandbox_name);
  logstderr("project_name = " + project_name);
*/
  return filespec;

}
]]>
  </extern>
     </file>
     <vers args="memberinfo %F" match="Member Revision:\s+(\d+(\.\d+)+){1}\s*" pos="2" />
     <diff cmd="script:mks_diff" script="mks_2.js" args="%u %p %d %F %m %n MKS_SERVER MKS_SERVER_PORT">
  <extern name="mks_2.js"><![CDATA[function base_name(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function dir_name(path) {
    return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
}
   
function si(arg)
{
  // logstderr("si(" + arg + ")");
  var out =
    callExternal(
      "si " + arg
    );
  return out;
}

function mks_diff(arg)
{
  // logstderr("mks_diff");
  var username = arg[0];
  var password = arg[1];
  var repository = arg[2];
  var filespec = arg[3];
  var revision1 = arg[4];
  var revision2 = arg[5];
  var hostname = arg[6];
  var portno   = arg[7];  
  // logstderr("repository = " + repository);
  // logstderr("filespec = " + filespec);  
  // logstderr("revision1 = " + revision1); 
  // logstderr("revision2 = " + revision2); 
  // logstderr("hostname = " + hostname);
  // logstderr("port = " + portno);
  
  var sep = filespec.indexOf("@");
  var diff = [ "" ];
  if ( sep >= 0 ) {
    var project = repository + filespec.substring(0, sep);
    var filename = filespec.substring(sep + 1);  
    
    diff =
      si(
        "diff --user=" + username + " --password=" + password + 
        " --hostname=" + hostname + " --port=" + portno +  " --batch" +      
        " --project=" + project + " -r " + revision1 + " -r " + revision2 + " " + filename
      );
  }
  else {
    var project = dir_name(filespec) + "/project.pj";
    var filename = base_name(filespec);
   // logstderr("project = " + project);    
   // logstderr("filename = " + filename);    
    diff =
      si(
        "diff --user=" + username + " --password=" + password + 
        " --hostname=" + hostname + " --port=" + portno +  " --batch" +      
        " --project=" + project + " -r " + revision1 + " -r " + revision2 + " " + filename
      );
  }  
  return diff;
}
]]>
  </extern>
     </diff>
     <code cmd="script:mks_code" script="mks_2.js" console="dummy" args="%u %p %d %F %m MKS_SERVER MKS_SERVER_PORT %c" strip="0">
  <extern name="mks_2.js"><![CDATA[function base_name(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function dir_name(path) {
    return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
}
   
function si(arg)
{
  // logstderr("si(" + arg + ")");
  var out =
    callExternal(
      "si " + arg
    );
  return out;
}

function mks_code(arg)
{
  // logstderr("mks_code");
  var username = arg[0];
  var password = arg[1];
  var repository = arg[2];
  var filespec = arg[3];
  var revision = arg[4];
  var hostname = arg[5];
  var portno   = arg[6];  
  // logstderr("repository = " + repository);
  // logstderr("filespec = " + filespec);  
  // logstderr("revision = " + revision); 
  // logstderr("hostname = " + hostname);
  // logstderr("port = " + portno);
  
  var sep = filespec.indexOf("@");
  var code = [ "" ];
  if ( sep >= 0 ) {
    var project = repository + filespec.substring(0, sep);
    var filename = filespec.substring(sep + 1);
    // logstderr("JB project = " + project);    
    // logstderr("JB filename = " + filename);

    code =
      si(
        "viewrevision --user=" + username + " --password=" + password +
        " --hostname=" + hostname + " --port=" + portno + " --batch" +
        " --project=" + project + " -r " + revision + " " + filename
      );
  }
  else {
    var project = dir_name(filespec) + "/project.pj";
    var filename = base_name(filespec);
   // logstderr("JB project = " + project);    
   // logstderr("JB filename = " + filename);    
    code =
      si(
        "viewrevision --user=" + username + " --password=" + password +
        " --hostname=" + hostname + " --port=" + portno + " --batch" +
        " --project=" + project + " -r " + revision + " " + filename
      );
  }
  return code;
}
]]>
  </extern>
     </code>
     <link />
     <chck />
     <date args="memberinfo %F" match="Created By:\s+(.+)\s+on\s+([\d]+\.[\d]+\.[\d]+\s+[\d]+:[\d]+:[\d]+\s+\w*)$" pos="3" />
     <auth args="memberinfo %F" match="Created By:\s+(.+)\s+on\s+.+$" pos="2" />
     </ccs>
    <replacement />
  </options>
</vcs>

<!-- 
%F  full path to the local file
%f  local file, equivalent of, cd `dirname %F`, cvs `basename %F`
%D  full path to the local file
%BD full path to the local file, with windows style backslashes
%Bf local file, with windows style backslashes
%BF full path including the local file, with windows style backslashes
%S  local file basename, without the suffix
%S  local file suffix
%m  major version number (i.e. current version)
%n  minor version (i.e. previous version
%r  path root, e.g. 'wget' for path 'wget/src/connect.c'
%i  incremental part of the path, used for progressive checkouts
%c  console output option
%d  project repository setting
%u  user
%p  password
%o1 user settings option1
%o2 user settings option2
%o3 user settings option3
%o4 user settings option4
%H  project host setting
%P  project port setting
%O1 project settings option1
%O2 project settings option2
%O3 project settings option3
%O4 project settings option4
%w  working directory (scratch path)
%Bw scratch path, with windows style backslashes
%A  prqavcs application path
%a  prqavcs application path with short path format on windows
-->
