exit(4);
}
-
static size_t
memback(void *contents, size_t size, size_t nmemb, void *userp)
{
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- printf("INFO: Fetching wepage\n");
+ printf("INFO: Fetching webpage\n");
res = curl_easy_perform(curl);
free(url);
if (c == '>') intag = false;
}
+ free(chunk.memory);
+
// Strip empty newlines
char *nl = (char *) calloc(1, sizeof(char));
if (!nl) memfail();
j = 1;
for (int i = 0; outp[i]; i++) {
j++;
- if (outp[i] == '\n' && outp[i+1] == '\n') i+=3;
- nl = (char *) realloc(nl, j);
- if (!nl) memfail();
- next[0] = outp[i+1];
- strncat(nl, next, 2);
+ 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+1];
+ strncat(nl, next, 2);
+ }
}
+
free(outp);
return nl;
}
void
-dayback(Widget w, XtPointer client_data, XtPointer call_data)
+dayback(Widget unused, XtPointer client_data, XtPointer call_data)
{
- Widget text_w = (Widget) client_data;
+ (void)unused;
+ Widget disp = (Widget) client_data;
XmListCallbackStruct *list_cbs = (XmListCallbackStruct *) call_data;
char *nl = getmenu(days[list_cbs->item_position - 1]);
- XmTextReplace((Widget) text_w, 0, strlen(XmTextGetString(text_w)), 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 */
+// Convert an array of string to an array of compound strings
XmStringTable ArgvToXmStringTable (int argc, char **argv)
{
XmStringTable new =
main(int argc, char *argv[])
{
// Initialize motif
- Widget toplevel, rowcol, w, text_w;
+ Widget toplevel, rowcol, daysel, disp;
XmStringTable strs;
XtAppContext app;
Arg args[5];
int n = 0;
XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
rowcol = XmCreateRowColumn(toplevel, "rowcol", args, n);
+ XtManageChild(rowcol);
// Create text widget to display menu
n = 0;
XtSetArg(args[n], XmNvalue, nl); n++;
XtSetArg(args[n], XmNeditable, False); n++;
XtSetArg(args[n], XmNcolumns, 80); n++;
+ XtSetArg(args[n], XmNrows, 20); n++;
+ XtSetArg (args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;
XtSetArg(args[n], XmNcursorPositionVisible, False); n++;
- text_w = XmCreateScrolledText(rowcol, "text", args, n);
- XtManageChild(text_w);
+ disp = XmCreateScrolledText(rowcol, "text", args, n);
+ XtManageChild(disp);
+ free(nl);
// Create day selector
- strs = ArgvToXmStringTable (XtNumber (days), days);
- w = XmCreateScrolledList(rowcol, "list", NULL, 0);
- XtVaSetValues(w,
- XmNitems, strs,
- XmNitemCount, XtNumber (days),
- NULL);
- XtAddCallback(w, XmNbrowseSelectionCallback, dayback, (XtPointer) text_w);
- XtManageChild(w);
- XtManageChild(rowcol);
+ strs = ArgvToXmStringTable (XtNumber(days), days);
+ daysel = XmCreateScrolledList(rowcol, "list", NULL, 0);
+ XtVaSetValues(daysel, XmNitems, strs, XmNitemCount, XtNumber(days), NULL);
+ XtAddCallback(daysel, XmNbrowseSelectionCallback, dayback, (XtPointer) disp);
+ XtManageChild(daysel);
// Display everything
XtRealizeWidget(toplevel);