Skip to content
Snippets Groups Projects
Commit 2ec2cad3 authored by deuce's avatar deuce
Browse files

Advertise the minimum required responses and add a perl-like split() for

commands.
parent 8d4181db
No related branches found
No related tags found
No related merge requests found
...@@ -74,41 +74,41 @@ CVS = new (function () { ...@@ -74,41 +74,41 @@ CVS = new (function () {
/* default accepted responses */ /* default accepted responses */
this.validResponses = { this.validResponses = {
'Checked-in': true, 'Checked-in': true, // Required
'Checksum': false, 'Checksum': false,
'Clear-rename': false, 'Clear-rename': false,
'Clear-static-directory':false, 'Clear-static-directory':false,
'Clear-sticky': false, 'Clear-sticky': false,
'Copy-file': true, 'Copy-file': false,
'Created': false, 'Created': false,
'E': true, 'E': true, // Handled
'EntriesExtra': false, 'EntriesExtra': false,
'F': true, 'F': true, // Handled
'M': true, 'M': true, // Handled
'MT': true, 'MT': true, // Handled
'Mbinary': false, 'Mbinary': false,
'Merged': true, 'Merged': true, // Required
'Mod-time': true, 'Mod-time': false,
'Mode': false, 'Mode': false,
'Module-expansion': false, 'Module-expansion': false,
'New-entry': false, 'New-entry': false,
'Notified': false, 'Notified': false,
'Patched': false, 'Patched': false,
'Rcs-diff': false, 'Rcs-diff': false,
'Remove-entry': true, 'Remove-entry': false,
'Removed': true, 'Removed': true, // Required
'Renamed': false, 'Renamed': false,
'Set-checkin-prog': false, 'Set-checkin-prog': false,
'Set-static-directory': false, 'Set-static-directory': false,
'Set-sticky': false, 'Set-sticky': false,
'Set-update-prog': false, 'Set-update-prog': false,
'Template': false, 'Template': false,
'Update-existing': true, 'Update-existing': false,
'Updated': true, 'Updated': true, // Required
'Valid-requests': true, 'Valid-requests': true, // Handled
'Wrapper-rcsOption': false, 'Wrapper-rcsOption': false,
'error': true, 'error': true, // Handled
'ok': true, 'ok': true, // Handled
}; };
/* populated by response to valid-requests */ /* populated by response to valid-requests */
...@@ -201,14 +201,34 @@ CVS = new (function () { ...@@ -201,14 +201,34 @@ CVS = new (function () {
*/ */
this.response getter = function() { this.response getter = function() {
function split_cmd(str, count) {
if(count==undefined)
count=2;
var ret=[];
while(--count) {
var space=str.indexOf(' ');
if(space==-1)
break;
ret.push(str.substr(0, space));
str=str.substr(space+1);
}
ret.push(str);
return ret;
}
for(;;) { for(;;) {
this.verifyConnection(); this.verifyConnection();
if(!this.socket.poll(1)) if(!this.socket.poll(1))
return undefined; return undefined;
var response=this.socket.recvline(4096,10); var response=this.socket.recvline(65535,10);
var cmd=response.split(' ', 2); var cmd=split_cmd(response,2);
if(cmd.length < 2) if(cmd.length < 2) {
if(cmd[0] != 'ok')
log(LOG_ERR, "Response with no arg: "+response);
return response; return response;
}
switch(cmd[0]) { switch(cmd[0]) {
case 'M': case 'M':
log(LOG_INFO, cmd[1]); log(LOG_INFO, cmd[1]);
...@@ -216,7 +236,7 @@ CVS = new (function () { ...@@ -216,7 +236,7 @@ CVS = new (function () {
writeln(cmd[1]); writeln(cmd[1]);
break; break;
case 'MT': case 'MT':
var m=cmd[1].split(' ',2); var m=cmd[1].split_cmd(' ',2);
switch(m[0]) { switch(m[0]) {
case 'newline': case 'newline':
if(js.global.writeln) if(js.global.writeln)
...@@ -237,9 +257,9 @@ CVS = new (function () { ...@@ -237,9 +257,9 @@ CVS = new (function () {
} }
break; break;
case 'E': case 'E':
log(LOG_ERR, m[1]); log(LOG_ERR, cmd[1]);
if(js.global.writeln) if(js.global.writeln)
writeln(m[1]); writeln(cmd[1]);
break; break;
case 'F': case 'F':
break; break;
...@@ -255,7 +275,8 @@ CVS = new (function () { ...@@ -255,7 +275,8 @@ CVS = new (function () {
log(LOG_ERR, "ERROR "+m[0]+" - "+m[1]); log(LOG_ERR, "ERROR "+m[0]+" - "+m[1]);
} }
else { else {
log(LOG_ERR, "ERROR - "+m[1]); if(m[1].length > 0)
log(LOG_ERR, "ERROR - "+m[1]);
} }
return response; return response;
default: default:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment