X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=mmenu.c;h=4e4283ca7bb5c555bc212303aede7819ec07ad05;hb=504a7161d0c5b7d96993125badb80bdfe4669057;hp=fafc3fd60f252cd2c6601273cc1c8e7184d37089;hpb=c0cde8f95a87aaa419cffe80cb75e7aa6a2d1501;p=mmenu.git diff --git a/mmenu.c b/mmenu.c index fafc3fd..4e4283c 100644 --- a/mmenu.c +++ b/mmenu.c @@ -101,6 +101,8 @@ getmenu(char *date) if (c == '>') intag = false; } + free(chunk.memory); + // Strip empty newlines char *nl = (char *) calloc(1, sizeof(char)); if (!nl) memfail(); @@ -108,15 +110,15 @@ getmenu(char *date) j = 1; for (int i = 0; outp[i]; i++) { j++; - if (outp[i] == '\n' && outp[i+1] == '\n') { - i++; - } else { + if (!((outp[i] == '\n' && outp[i+1] == '\n') || + (outp[i] == ' ' && outp[i+1] == ' '))) { nl = (char *) realloc(nl, j); if (!nl) memfail(); - next[0] = outp[i]; + next[0] = outp[i+1]; strncat(nl, next, 2); } } + free(outp); return nl; } @@ -128,7 +130,10 @@ dayback(Widget unused, XtPointer client_data, XtPointer call_data) Widget disp = (Widget) client_data; XmListCallbackStruct *list_cbs = (XmListCallbackStruct *) call_data; char *nl = getmenu(days[list_cbs->item_position - 1]); - XmTextReplace((Widget) disp, 0, strlen(XmTextGetString(disp)), nl); + char *oldtext = XmTextGetString(disp) ; + XmTextReplace((Widget) disp, 0, strlen(oldtext), nl); + free(nl); + free(oldtext); } // Convert an array of string to an array of compound strings @@ -165,7 +170,8 @@ main(int argc, char *argv[]) // Create text widget to display menu n = 0; - XtSetArg(args[n], XmNvalue, getmenu("")); n++; + char *nl = getmenu(""); + XtSetArg(args[n], XmNvalue, nl); n++; XtSetArg(args[n], XmNeditable, False); n++; XtSetArg(args[n], XmNcolumns, 80); n++; XtSetArg(args[n], XmNrows, 20); n++; @@ -173,6 +179,7 @@ main(int argc, char *argv[]) XtSetArg(args[n], XmNcursorPositionVisible, False); n++; disp = XmCreateScrolledText(rowcol, "text", args, n); XtManageChild(disp); + free(nl); // Create day selector strs = ArgvToXmStringTable (XtNumber(days), days);