Skip to content

Commit db81858

Browse files
committed
libcare-client: use default socket
Use `/var/run/libcare.sock` as a default socket for the client. Specify a full path to another one as a first argument. Signed-off-by: Pavel Boldin <pboldin@cloudlinux.com>
1 parent f8fce9e commit db81858

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

src/libcare-client.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,49 @@
77

88
#define handle_error(errstr) do { perror(errstr); exit(EXIT_FAILURE); } while (0)
99

10+
#define DEFAULT_SOCKET "/var/run/libcare.sock"
11+
1012
int main(int argc, char **argv)
1113
{
1214
int sock, rv, buflen, i;
1315
struct sockaddr_un sockaddr;
14-
char *buffer = NULL, *p;
16+
char *buffer = NULL, *p, *sockpath = DEFAULT_SOCKET;
1517

16-
if (argc < 3) {
17-
printf("%s: SOCKET ARG0 [ARG1] [ARG2]\n", argv[0]);
18+
if (argc < 2 || (argv[1][0] == '/' && argc < 3)) {
19+
printf("%s: [/SOCKET] ARG0 [ARG1] [ARG2]\n", argv[0]);
1820
exit(EXIT_FAILURE);
1921
}
2022

23+
argv++;
24+
argc--;
25+
2126
sock = socket(AF_UNIX, SOCK_STREAM, 0);
2227
if (sock == -1)
2328
handle_error("socket(AF_UNIX)");
2429

2530
sockaddr.sun_family = AF_UNIX;
26-
strncpy(sockaddr.sun_path, argv[1], sizeof(sockaddr.sun_path));
31+
32+
if (argv[0][0] == '/') {
33+
sockpath = argv[0];
34+
argv++;
35+
argc--;
36+
}
37+
strncpy(sockaddr.sun_path, sockpath, sizeof(sockaddr.sun_path));
2738

2839
rv = connect(sock, (const struct sockaddr *)&sockaddr, sizeof(sockaddr));
2940
if (rv == -1)
3041
handle_error("connect");
3142

3243
buflen = 0;
33-
for (i = 2; i < argc; i++) {
44+
for (i = 0; i < argc; i++) {
3445
buflen += strlen(argv[i]) + 1;
3546
}
3647
buflen++;
3748

3849
p = buffer = malloc(buflen);
3950
if (buffer == NULL)
4051
handle_error("malloc");
41-
for (i = 2; i < argc; i++) {
52+
for (i = 0; i < argc; i++) {
4253
p = stpcpy(p, argv[i]);
4354
p++;
4455
}

0 commit comments

Comments
 (0)