[PATCH 2 of 2] chg: upgrade client to use "setumask2" command

Yuya Nishihara yuya at tcha.org
Fri Oct 5 09:30:37 EDT 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1538744917 -32400
#      Fri Oct 05 22:08:37 2018 +0900
# Node ID 4cb84ca878258306a364c6b1502081e469dabd64
# Parent  fea3ce7f43989d7fd50a04cf2f8ff402031cdbd8
chg: upgrade client to use "setumask2" command

No compatibility code is added to the client side, since it's unlikely for
new client to communicate with the old server.

diff --git a/contrib/chg/hgclient.c b/contrib/chg/hgclient.c
--- a/contrib/chg/hgclient.c
+++ b/contrib/chg/hgclient.c
@@ -32,7 +32,7 @@ enum { CAP_GETENCODING = 0x0001,
        CAP_ATTACHIO = 0x0100,
        CAP_CHDIR = 0x0200,
        CAP_SETENV = 0x0800,
-       CAP_SETUMASK = 0x1000,
+       CAP_SETUMASK2 = 0x1000,
        CAP_VALIDATE = 0x2000,
        CAP_SETPROCNAME = 0x4000,
 };
@@ -48,7 +48,7 @@ static const cappair_t captable[] = {
     {"attachio", CAP_ATTACHIO},
     {"chdir", CAP_CHDIR},
     {"setenv", CAP_SETENV},
-    {"setumask", CAP_SETUMASK},
+    {"setumask2", CAP_SETUMASK2},
     {"validate", CAP_VALIDATE},
     {"setprocname", CAP_SETPROCNAME},
     {NULL, 0}, /* terminator */
@@ -425,10 +425,11 @@ static void forwardumask(hgclient_t *hgc
 	mode_t mask = umask(0);
 	umask(mask);
 
-	static const char command[] = "setumask\n";
-	sendall(hgc->sockfd, command, sizeof(command) - 1);
 	uint32_t data = htonl(mask);
-	sendall(hgc->sockfd, &data, sizeof(data));
+	enlargecontext(&hgc->ctx, sizeof(data));
+	memcpy(hgc->ctx.data, &data, sizeof(data));
+	hgc->ctx.datasize = sizeof(data);
+	writeblockrequest(hgc, "setumask2");
 }
 
 /*!
@@ -508,7 +509,7 @@ hgclient_t *hgc_open(const char *socknam
 		attachio(hgc);
 	if (hgc->capflags & CAP_CHDIR)
 		chdirtocwd(hgc);
-	if (hgc->capflags & CAP_SETUMASK)
+	if (hgc->capflags & CAP_SETUMASK2)
 		forwardumask(hgc);
 
 	return hgc;


More information about the Mercurial-devel mailing list