Add -H
parent
a91f975e9b
commit
0d93e66a68
|
@ -1,4 +1,4 @@
|
||||||
.Dd February 9, 2020
|
.Dd February 10, 2020
|
||||||
.Dt CATGIRL 1
|
.Dt CATGIRL 1
|
||||||
.Os
|
.Os
|
||||||
.
|
.
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl ev
|
.Op Fl ev
|
||||||
.Op Fl C Ar copy
|
.Op Fl C Ar copy
|
||||||
|
.Op Fl H Ar hash
|
||||||
.Op Fl O Ar open
|
.Op Fl O Ar open
|
||||||
.Op Fl a Ar auth
|
.Op Fl a Ar auth
|
||||||
.Op Fl c Ar cert
|
.Op Fl c Ar cert
|
||||||
|
@ -57,6 +58,10 @@ The default is the first available of
|
||||||
.Xr xclip 1 ,
|
.Xr xclip 1 ,
|
||||||
.Xr xsel 1 .
|
.Xr xsel 1 .
|
||||||
.
|
.
|
||||||
|
.It Fl H Ar hash , Cm hash = Ar hash
|
||||||
|
Set the initial value of
|
||||||
|
the nick color hash function.
|
||||||
|
.
|
||||||
.It Fl O Ar util , Cm open = Ar util
|
.It Fl O Ar util , Cm open = Ar util
|
||||||
Set the utility used by
|
Set the utility used by
|
||||||
.Ic /open .
|
.Ic /open .
|
||||||
|
|
7
chat.c
7
chat.c
|
@ -21,6 +21,7 @@
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -46,6 +47,8 @@ size_t idNext = Network + 1;
|
||||||
|
|
||||||
struct Self self = { .color = Default };
|
struct Self self = { .color = Default };
|
||||||
|
|
||||||
|
uint32_t hashInit;
|
||||||
|
|
||||||
int procPipe[2] = { -1, -1 };
|
int procPipe[2] = { -1, -1 };
|
||||||
|
|
||||||
static void pipeRead(void) {
|
static void pipeRead(void) {
|
||||||
|
@ -81,10 +84,11 @@ int main(int argc, char *argv[]) {
|
||||||
const char *user = NULL;
|
const char *user = NULL;
|
||||||
const char *real = NULL;
|
const char *real = NULL;
|
||||||
|
|
||||||
const char *Opts = "!C:O:a:c:eh:j:k:n:p:r:u:vw:";
|
const char *Opts = "!C:H:O:a:c:eh:j:k:n:p:r:u:vw:";
|
||||||
const struct option LongOpts[] = {
|
const struct option LongOpts[] = {
|
||||||
{ "insecure", no_argument, NULL, '!' },
|
{ "insecure", no_argument, NULL, '!' },
|
||||||
{ "copy", required_argument, NULL, 'C' },
|
{ "copy", required_argument, NULL, 'C' },
|
||||||
|
{ "hash", required_argument, NULL, 'H' },
|
||||||
{ "open", required_argument, NULL, 'O' },
|
{ "open", required_argument, NULL, 'O' },
|
||||||
{ "sasl-plain", required_argument, NULL, 'a' },
|
{ "sasl-plain", required_argument, NULL, 'a' },
|
||||||
{ "cert", required_argument, NULL, 'c' },
|
{ "cert", required_argument, NULL, 'c' },
|
||||||
|
@ -106,6 +110,7 @@ int main(int argc, char *argv[]) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
break; case '!': insecure = true;
|
break; case '!': insecure = true;
|
||||||
break; case 'C': urlCopyUtil = optarg;
|
break; case 'C': urlCopyUtil = optarg;
|
||||||
|
break; case 'H': hashInit = strtoul(optarg, NULL, 0);
|
||||||
break; case 'O': urlOpenUtil = optarg;
|
break; case 'O': urlOpenUtil = optarg;
|
||||||
break; case 'a': sasl = true; self.plain = optarg;
|
break; case 'a': sasl = true; self.plain = optarg;
|
||||||
break; case 'c': cert = optarg;
|
break; case 'c': cert = optarg;
|
||||||
|
|
3
chat.h
3
chat.h
|
@ -190,9 +190,10 @@ int getopt_config(
|
||||||
const char *optstring, const struct option *longopts, int *longindex
|
const char *optstring, const struct option *longopts, int *longindex
|
||||||
);
|
);
|
||||||
|
|
||||||
|
extern uint32_t hashInit;
|
||||||
static inline enum Color hash(const char *str) {
|
static inline enum Color hash(const char *str) {
|
||||||
if (*str == '~') str++;
|
if (*str == '~') str++;
|
||||||
uint32_t hash = 0;
|
uint32_t hash = hashInit;
|
||||||
for (; *str; ++str) {
|
for (; *str; ++str) {
|
||||||
hash = (hash << 5) | (hash >> 27);
|
hash = (hash << 5) | (hash >> 27);
|
||||||
hash ^= *str;
|
hash ^= *str;
|
||||||
|
|
Loading…
Reference in New Issue