summary refs log tree commit diff
path: root/contrib/palaver/notify.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/palaver/notify.c')
-rw-r--r--contrib/palaver/notify.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/contrib/palaver/notify.c b/contrib/palaver/notify.c
index 2d2d0bb..e35dabb 100644
--- a/contrib/palaver/notify.c
+++ b/contrib/palaver/notify.c
@@ -527,17 +527,24 @@ static void handleReplyUnaway(struct Message *msg) {
 	sqlite3_reset(stmts[Clear]);
 }
 
+static bool noPreview;
+static bool noPrivatePreview;
+
 static void jsonBody(
 	char *buf, size_t cap,
 	struct Message *msg, const char *network, bool preview
 ) {
+	bool private = (msg->params[0][0] != '#');
+	if (private && noPrivatePreview) preview = false;
+	if (noPreview) preview = false;
+
 	FILE *file = fmemopen(buf, cap, "w");
 	if (!file) err(EX_OSERR, "fmemopen");
 
 	fprintf(file, "{\"badge\":%d", badge);
 	fprintf(file, ",\"sender\":");
 	jsonString(file, msg->nick);
-	if (strcmp(msg->params[0], nick)) {
+	if (!private) {
 		fprintf(file, ",\"channel\":");
 		jsonString(file, msg->params[0]);
 	}
@@ -654,9 +661,11 @@ int main(int argc, char *argv[]) {
 	const char *pass = NULL;
 	const char *user = "pounce-palaver";
 
-	for (int opt; 0 < (opt = getopt(argc, argv, "!c:d:k:p:u:vw:"));) {
+	for (int opt; 0 < (opt = getopt(argc, argv, "!NPc:d:k:p:u:vw:"));) {
 		switch (opt) {
 			break; case '!': insecure = true;
+			break; case 'N': noPreview = true;
+			break; case 'P': noPrivatePreview = true;
 			break; case 'c': cert = optarg;
 			break; case 'd': path = optarg;
 			break; case 'k': priv = optarg;