static char * osm_strip_html(const char *str) { utf_string utf; utf.is_html = 1; utf.utfstring = (char *)str; return strip_html(&utf); // util.c }
static char * geoniche_geostuff(const waypoint *wpt) { char *gs = NULL, *tmp1, *tmp2, *tmp3; char tbuf[10240]; if (!wpt->gc_data->terr) { return NULL; } snprintf(tbuf, sizeof(tbuf), "\n%s by %s\n\n", gs_get_cachetype(wpt->gc_data->type), wpt->gc_data->placer); gs = xstrappend(gs, tbuf); /* * 3 May 06: Removed duplicated information * * snprintf(tbuf, sizeof(tbuf), "Waypoint: %s %s\n", wpt->shortname, wpt->description); * gs = xstrappend(gs, tbuf); */ /* * 3 May 06: Added container type */ snprintf(tbuf, sizeof(tbuf), "Container: %s\nDifficulty: %3.1f\nTerrain: %3.1f\n\n", gs_get_container(wpt->gc_data->container), wpt->gc_data->diff/10.0, wpt->gc_data->terr/10.0); gs = xstrappend(gs, tbuf); tmp1 = strip_html(&wpt->gc_data->desc_short); tmp2 = strip_html(&wpt->gc_data->desc_long); gs = xstrappend(gs, tmp1); gs = xstrappend(gs, tmp2); tmp3 = rot13(wpt->gc_data->hint); snprintf(tbuf, sizeof(tbuf), "\n\nHint: %s\n", tmp3); gs = xstrappend(gs, tbuf); xfree(tmp1); xfree(tmp2); xfree(tmp3); tmp1 = enscape(gs); xfree(gs); return tmp1; }
void AIMProtocol::GotMessage(void* imcomm, char* who, int aut, char* recvmsg) { BMessage msg(IM_MESSAGE); msg.AddInt32("im_what", IM_MESSAGE_RECEIVED); msg.AddString("protocol", kProtocolSignature); msg.AddString("id", who); msg.AddString("body", strip_html(recvmsg)); gServerMsgr->SendMessage(&msg); }
void AIMProtocol::BuddyAwayMsg(void* imcomm, char* who, char* awaymsg) { BMessage msg(IM_MESSAGE); msg.AddInt32("im_what", IM_STATUS_SET); msg.AddString("protocol", kProtocolSignature); msg.AddString("id", who); msg.AddInt32("status", CAYA_AWAY); msg.AddString("message", strip_html(awaymsg)); gServerMsgr->SendMessage(&msg); }
/* PROTO */ void buddy_profile(void *c, const char *who, const char *msg) { char *ptext; long days, hours, minutes; struct BuddyList *trav; char *sname; #ifdef DUMP_PROFILE FILE *profile_dump; #endif sname = simplify_sn(who); eraseline(); for (trav = buddylist; trav; trav = trav->next) { if (strcmp(trav->sn, sname) == 0) { if (trav->idle) { b_echostr_s(); printf("[%s] Idle: ", who); days = trav->idletime / 1440; hours = (trav->idletime % 1440) / 60; minutes = trav->idletime % 60; if (days > 0) printf("%ld days, ", days); if (hours > 0) printf("%ld hour%s, ", hours, (hours != 1 ? "s" : "")); printf("%ld minute%s\n", minutes, (minutes != 1 ? "s" : "")); break; } } } b_echostr_s(); printf("[%s] Info:\n", who); free(sname); ptext = strip_html(msg); prettyprint_echostr(ptext, PROFILE_ECHOSTR); free(ptext); #ifdef DUMP_PROFILE if ((profile_dump = fopen(PROFILE_DUMP_PATH, "w")) != NULL) { fprintf(profile_dump, "%s", msg); fclose(profile_dump); } #endif show_prompt(); }
char* strip_html(char *src) { int size = MultiByteToWideChar(CP_ACP, 0, src, -1, 0, 0); wchar_t* buf=new wchar_t[size]; MultiByteToWideChar(CP_ACP, 0, src, -1,buf,size); wchar_t* stripped_buf=strip_html(buf); delete[] buf; size = WideCharToMultiByte( CP_ACP, 0, stripped_buf, -1, 0, 0, NULL, NULL ); char* dest=new char[size]; WideCharToMultiByte( CP_ACP, 0, stripped_buf, -1, dest, size, NULL, NULL ); delete[] stripped_buf; return dest; }
static void *prplcb_notify_userinfo( PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info ) { struct im_connection *ic = purple_ic_by_gc( gc ); GString *info = g_string_new( "" ); GList *l = purple_notify_user_info_get_entries( user_info ); char *key; const char *value; int n; while( l ) { PurpleNotifyUserInfoEntry *e = l->data; switch( purple_notify_user_info_entry_get_type( e ) ) { case PURPLE_NOTIFY_USER_INFO_ENTRY_PAIR: case PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER: key = g_strdup( purple_notify_user_info_entry_get_label( e ) ); value = purple_notify_user_info_entry_get_value( e ); if( key ) { strip_html( key ); g_string_append_printf( info, "%s: ", key ); if( value ) { n = strlen( value ) - 1; while( isspace( value[n] ) ) n --; g_string_append_len( info, value, n + 1 ); } g_string_append_c( info, '\n' ); g_free( key ); } break; case PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK: g_string_append( info, "------------------------\n" ); break; } l = l->next; } imcb_log( ic, "User %s info:\n%s", who, info->str ); g_string_free( info, TRUE ); return NULL; }
/* PROTO */ void buddy_awaymsg(void *c, const char *who, const char *msg) { char *ptext; eraseline(); b_echostr_s(); printf("[%s] Away: ", who); ptext = strip_html(msg); prettyprint(ptext, 12 + strlen(who)); if (ptext[0] == 0) printf("\n"); free(ptext); show_prompt(); }
static gint messagebox_cb(GWEN_GUI *gwen_gui, guint32 flags, const gchar *title, const gchar *text, const gchar *b1, const gchar *b2, const gchar *b3, guint32 guiid) { GncGWENGui *gui = GETDATA_GUI(gwen_gui); GtkWidget *dialog; GtkWidget *vbox; GtkWidget *label; gchar *raw_text; gint result; ENTER("gui=%p, flags=%d, title=%s, b1=%s, b2=%s, b3=%s", gui, flags, title ? title : "(null)", b1 ? b1 : "(null)", b2 ? b2 : "(null)", b3 ? b3 : "(null)"); dialog = gtk_dialog_new_with_buttons( title, gui->parent ? GTK_WINDOW(gui->parent) : NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, b1, 1, b2, 2, b3, 3, (gchar*) NULL); raw_text = strip_html(g_strdup(text)); label = gtk_label_new(raw_text); g_free(raw_text); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); vbox = gtk_vbox_new(TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); gtk_container_add(GTK_CONTAINER(vbox), label); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); if (result < 1 || result > 3) { g_warning("messagebox_cb: Bad result %d", result); result = 0; } LEAVE("result=%d", result); return result; }
/* PROTO */ void getmessage(void *c, const char *who, const int automessage, const char *message) { const char *msgin = message; char *msg = NULL, *tempmsg = NULL; char *sname; struct Waiting *wtemp, *wptr = NULL; int offset, foundWaiting = 0; int otr_message = 0; if (conn->otr) { struct BuddyList *buddy = NULL; buddy = find_buddy(who); if (buddy) { if (buddy->otr != -1) { char *newmsg; int ret = otrl_message_receiving(userstate, &ui_ops, NULL, conn->username, otr_proto, buddy->sn, msgin, &newmsg, NULL, &buddy->otr_context, NULL, NULL); if (ret) { #ifdef DEBUG b_echostr_s(); printf("[OTR] debug: internal msg %s\n", msgin); #endif return; } else { if (newmsg) { msgin = strdup(newmsg); otrl_message_free(newmsg); if (buddy->otr_context->msgstate == OTRL_MSGSTATE_ENCRYPTED) otr_message = 1; } } } } } tempmsg = strip_html(msgin); if (tempmsg == NULL) return; if (strlen(tempmsg) == 0) { free(tempmsg); return; } if (conn->netspeak_filter) { msg = undo_netspeak(tempmsg); free(tempmsg); } else { msg = tempmsg; } if (msg == NULL) return; if (strlen(msg) == 0) { free(msg); return; } if (conn->istyping == 0) { if (conn->lastsn != NULL) free(conn->lastsn); conn->lastsn = simplify_sn(who); } sname = simplify_sn(who); if (waiting == NULL) { waiting = malloc(sizeof(struct Waiting)); wptr = waiting; } else { for (wtemp = waiting; wtemp != NULL; wtemp = wtemp->next) if (imcomm_compare_nicks(c, wtemp->sn, who)) { foundWaiting = 1; wptr = wtemp; break; } if (!foundWaiting) { for (wtemp = waiting; wtemp->next != NULL; wtemp = wtemp->next); wtemp->next = malloc(sizeof(struct Waiting)); wptr = wtemp->next; } } if (!foundWaiting) { wptr->sn = strdup(who); wptr->next = NULL; if (conn->isaway && !automessage) { if ((conn->respond_idle_only && conn->isidle) || (!conn->respond_idle_only)) { imcomm_im_send_message(c, who, conn->awaymsg, 1); eraseline(); b_echostr_s(); if (conn->timestamps) { addts(); putchar(' '); } printf("Sent auto-response to %s.\n", who); show_prompt(); } } } #ifdef MESSAGE_QUEUE if (conn->isaway) wptr->mqueue = addToMQueue(wptr->mqueue, msg, who); #endif /* MESSAGE_QUEUE */ eraseline(); if (conn->bell_on_incoming) putchar('\a'); if (conn->timestamps) { addts(); putchar(' '); offset = 11; } else { offset = 0; } offset += strlen(who) + 2; if (automessage) { set_color(COLOR_AUTORESPONSE); printf("*AUTO RESPONSE* "); set_color(0); offset += 16; } set_color(COLOR_INCOMING_IM); if (!otr_message) printf("%s", who); else { offset += 5; printf("(otr)%s", who); } set_color(0); printf(": "); wordwrap_print(msg, offset); if (automessage) log_event(EVENT_IM_AUTORESPONSE, sname, msg); else log_event(EVENT_IM, sname, msg); free(msg); free(sname); show_prompt(); }
/* PROTO */ void input_send_message(char *arg) { char *msg, *msg_strip, *temp, *sn; char *fullmsg; size_t fullmsg_len; int offset; if (conn->conn == NULL) return; temp = strchr(arg, ' '); if (temp == NULL) { printf("\n"); b_echostr_s(); printf("No message to send.\n"); return; } if (strlen(temp + 1) == 0) { printf("\nNo message to send.\n"); return; } if (conn->netspeak_filter) msg = undo_netspeak(temp + 1); else msg = temp + 1; sn = malloc(temp - arg + 1); sn[temp - arg] = 0; strncpy(sn, arg, temp - arg); fullmsg_len = strlen(msg) + strlen(SEND_FORMAT_BEGIN) + strlen(SEND_FORMAT_END) + 1; fullmsg = malloc(fullmsg_len + 1); snprintf(fullmsg, fullmsg_len, "%s%s%s", SEND_FORMAT_BEGIN, msg, SEND_FORMAT_END); imcomm_im_send_message(conn->conn, sn, fullmsg, 0); free(fullmsg); eraseline(); if (conn->timestamps) { addts(); putchar(' '); offset = 13; } else { offset = 2; } offset += strlen(sn) + 2; set_color(COLOR_OUTGOING_IM); printf("->%s", sn); set_color(0); printf(": "); msg_strip = strip_html(msg); wordwrap_print(msg_strip, offset); free(msg_strip); if (conn->lastsn != NULL) free(conn->lastsn); conn->lastsn = strdup(sn); log_event(EVENT_IMSEND, sn, msg); free(sn); if (conn->netspeak_filter) free(msg); }
/* PROTO */ void getmessage(void *c, const char *who, const int automessage, const char *message) { char *msg, *tempmsg; char *sname; struct Waiting *wtemp, *wptr = NULL; int offset, foundWaiting = 0; tempmsg = strip_html(message); if (tempmsg == NULL) return; if (strlen(tempmsg) == 0) { free(tempmsg); return; } if (conn->netspeak_filter) { msg = undo_netspeak(tempmsg); free(tempmsg); } else { msg = tempmsg; } if (msg == NULL) return; if (strlen(msg) == 0) { free(msg); return; } if (conn->istyping == 0) { if (conn->lastsn != NULL) free(conn->lastsn); conn->lastsn = simplify_sn(who); } sname = simplify_sn(who); if (waiting == NULL) { waiting = malloc(sizeof(struct Waiting)); wptr = waiting; } else { for (wtemp = waiting; wtemp != NULL; wtemp = wtemp->next) if (imcomm_compare_nicks(c, wtemp->sn, who)) { foundWaiting = 1; wptr = wtemp; break; } if (!foundWaiting) { for (wtemp = waiting; wtemp->next != NULL; wtemp = wtemp->next); wtemp->next = malloc(sizeof(struct Waiting)); wptr = wtemp->next; } } if (!foundWaiting) { wptr->sn = strdup(who); wptr->next = NULL; if (conn->isaway && !automessage) { if ((conn->respond_idle_only && conn->isidle) || (!conn->respond_idle_only)) { imcomm_im_send_message(c, who, conn->awaymsg, 1); eraseline(); b_echostr_s(); if (conn->timestamps) { addts(); putchar(' '); } printf("Sent auto-response to %s.\n", who); show_prompt(); } } } #ifdef MESSAGE_QUEUE if (conn->isaway) wptr->mqueue = addToMQueue(wptr->mqueue, msg, who); #endif /* MESSAGE_QUEUE */ eraseline(); if (conn->bell_on_incoming) putchar('\a'); if (conn->timestamps) { addts(); putchar(' '); offset = 11; } else { offset = 0; } offset += strlen(who) + 2; if (automessage) { set_color(COLOR_AUTORESPONSE); printf("*AUTO RESPONSE* "); set_color(0); offset += 16; } set_color(COLOR_INCOMING_IM); printf("%s", who); set_color(0); printf(": "); wordwrap_print(msg, offset); if (automessage) log_event(EVENT_IM_AUTORESPONSE, sname, msg); else log_event(EVENT_IM, sname, msg); free(msg); free(sname); show_prompt(); }
static void mmo_write_wpt_cb(const waypoint *wpt) { char *str, *cx; int objid; time_t time; int icon = 0; time = wpt->creation_time; if (time < 0) time = 0; if (mmo_datatype == trkdata) { gbfputdbl(wpt->latitude, fout); gbfputdbl(wpt->longitude, fout); gbfputc(0, fout); gbfputuint32(time, fout); if (wpt->altitude != unknown_alt) gbfputflt(wpt->altitude, fout); else gbfputflt(0, fout); return; } objid = mmo_write_obj_head("CObjWaypoint", (wpt->shortname && *wpt->shortname) ? wpt->shortname : "Mark", time, wptdata); mmo_register_object(objid, wpt, wptdata); mmo_write_category("CCategory", (mmo_datatype == rtedata) ? "Waypoints" : "Marks"); gbfputdbl(wpt->latitude, fout); gbfputdbl(wpt->longitude, fout); if (mmo_datatype == rtedata) { int i = mmo_get_objid(mmo_rte); gbfputuint16(1, fout); /* two extra bytes */ gbfputuint16(i & 0x7FFF, fout); } else gbfputuint16(0, fout); /* extra bytes */ if (wpt->url && *wpt->url) { str = xstrdup("_FILE_ "); str = xstrappend(str, wpt->url); str = xstrappend(str, "\n"); } else str = xstrdup(""); cx = wpt->notes; if (cx == NULL) cx = wpt->description; if (cx != NULL) { char *kml = NULL; if (strcmp(wpt->session->name, "kml") == 0) { utf_string tmp; tmp.utfstring = cx; tmp.is_html = 1; cx = kml = strip_html(&tmp); } str = xstrappend(str, cx); if (kml) xfree(kml); } mmo_writestr(str); xfree(str); gbfputuint32(0x01, fout); if WAYPT_HAS(wpt, proximity) gbfputflt((int) wpt->proximity, fout); else gbfputflt(0, fout);
static void get_input(GncGWENGui *gui, guint32 flags, const gchar *title, const gchar *text, gchar **input, gint min_len, gint max_len) { GladeXML *xml; GtkWidget *dialog; GtkWidget *heading_label; GtkWidget *input_entry; GtkWidget *confirm_entry; GtkWidget *confirm_label; GtkWidget *remember_pin_checkbutton; const gchar *internal_input, *internal_confirmed; gboolean confirm = (flags & GWEN_GUI_INPUT_FLAGS_CONFIRM) != 0; gboolean hidden = (flags & GWEN_GUI_INPUT_FLAGS_SHOW) == 0; gboolean is_tan = (flags & GWEN_GUI_INPUT_FLAGS_TAN) != 0; gint retval; g_return_if_fail(input); g_return_if_fail(max_len >= min_len && max_len > 0); ENTER(" "); /* Set up dialog */ xml = gnc_glade_xml_new("aqbanking.glade", "Password Dialog"); dialog = glade_xml_get_widget(xml, "Password Dialog"); g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref); heading_label = glade_xml_get_widget(xml, "heading_label"); input_entry = glade_xml_get_widget(xml, "input_entry"); confirm_entry = glade_xml_get_widget(xml, "confirm_entry"); confirm_label = glade_xml_get_widget(xml, "confirm_label"); remember_pin_checkbutton = glade_xml_get_widget(xml, "remember_pin"); if (is_tan) { gtk_widget_hide(remember_pin_checkbutton); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remember_pin_checkbutton), gui->cache_passwords); } if (gui->parent) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gui->parent)); if (title) gtk_window_set_title(GTK_WINDOW(dialog), title); if (text) { gchar *raw_text = strip_html(g_strdup(text)); gtk_label_set_text(GTK_LABEL(heading_label), raw_text); g_free(raw_text); } if (*input) { gtk_entry_set_text(GTK_ENTRY(input_entry), *input); erase_password(*input); *input = NULL; } if (confirm) { gtk_entry_set_activates_default(GTK_ENTRY(input_entry), FALSE); gtk_entry_set_activates_default(GTK_ENTRY(confirm_entry), TRUE); gtk_entry_set_max_length(GTK_ENTRY(input_entry), max_len); gtk_entry_set_max_length(GTK_ENTRY(confirm_entry), max_len); } else { gtk_entry_set_activates_default(GTK_ENTRY(input_entry), TRUE); gtk_entry_set_max_length(GTK_ENTRY(input_entry), max_len); gtk_widget_hide(confirm_entry); gtk_widget_hide(confirm_label); } gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); /* Ask the user until he enters a valid input or cancels */ while (TRUE) { gboolean remember_pin; if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) break; if (!is_tan) { /* Enable or disable the password cache */ remember_pin = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(remember_pin_checkbutton)); enable_password_cache(gui, remember_pin); gnc_gconf_set_bool(GCONF_SECTION_AQBANKING, KEY_REMEMBER_PIN, remember_pin, NULL); } internal_input = gtk_entry_get_text(GTK_ENTRY(input_entry)); if (strlen(internal_input) < min_len) { gboolean retval; gchar *msg = g_strdup_printf( _("The PIN needs to be at least %d characters \n" "long. Do you want to try again?"), min_len); retval = gnc_verify_dialog(gui->parent, TRUE, "%s", msg); g_free(msg); if (!retval) break; continue; } if (!confirm) { *input = g_strdup(internal_input); break; } internal_confirmed = gtk_entry_get_text(GTK_ENTRY(confirm_entry)); if (strcmp(internal_input, internal_confirmed) == 0) { *input = g_strdup(internal_input); break; } } /* This trashes passwords in the entries' memory as well */ gtk_widget_destroy(dialog); LEAVE("input %s", *input ? "non-NULL" : "NULL"); }
/******************************************************************* * 從 URI 判斷要求及抓出有用的資訊 * set BOARDNAME, POST_NAME, SKIN_FILE * * return URLParaType *******************************************************************/ int ParseURI(const char *curi, REQUEST_REC *r, BOARDHEADER *board, POST_FILE *pf) { char *p, *boardname; int HttpRequestType; char skin[PATHLEN], post[PATHLEN]; *skin = 0x00; *post = 0x00; *BBS_SUBDIR = 0x00; boardname = board->filename; HttpRequestType = r->HttpRequestType; if(curi[strlen(curi)-1] == '\\') { strncat(skin_file->filename, curi, strlen(curi)-1); return Redirect; } else if((p = strstr(curi, "/treasure/")) != NULL) { /* subdir/treasure/bname/ subdir/treasure/bname/start-end subdir/treasure/bname/treadir/treapost */ xstrncpy(BBS_SUBDIR, curi+1, p-curi+1); curi = p + 10; #if 0 if(curi[strlen(curi)-1] == '\\') { sprintf(skin_file->filename, "/%streasure/", BBS_SUBDIR); strncat(skin_file->filename, curi, strlen(curi)-1); return Redirect; } #endif GetURIToken(boardname, post, skin, curi); #if 0 fprintf(fp_out, "[BOARDNAME=%s, post=%s, skin=%s]<br>", boardname, post, skin); fflush(fp_out); #endif if(HttpRequestType == POST) { xstrncpy(pf->POST_NAME, post, PATHLEN); if(!strcmp(skin, POST_PostSend)) return TreaSend; else if(!strcmp(skin, POST_PostEdit)) return TreaEdit; else if(!strcmp(skin, POST_PostForward)) return TreaForward; else if(!strcmp(skin, POST_PostDelete)) return TreaDelete; else return Board; } if(strlen(boardname)==0) /* no BOARDNAME assigned , list all boards */ { if(strlen(skin)==0) { sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_TreaBoardList); return TreaBoardList; } else { /* skin is boardname */ sprintf(skin_file->filename, "/%streasure/%s/", BBS_SUBDIR, skin); return Redirect; } } if(strlen(skin)==0) /* must be treasure dir */ { if(strlen(post)==0) { settreafile(pf->POST_NAME, board->filename, DIR_REC); } else { settreafile(pf->POST_NAME, board->filename, post); strcat(pf->POST_NAME, "/"); strcat(pf->POST_NAME, DIR_REC); } sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_TreaList); return TreaList; } if(strlen(post)) /* has treasure sub-dir*/ { settreafile(pf->POST_NAME, boardname, post); strcat(pf->POST_NAME, "/"); strcat(pf->POST_NAME, skin); } else { settreafile(pf->POST_NAME, boardname, skin); } if(isPost(skin)) { strip_html(pf->POST_NAME); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_TreaPost); return TreaRead; } if(isdir(pf->POST_NAME)) /* check isdir before isPost */ { sprintf(skin_file->filename, "/%s%s/", BBS_SUBDIR, pf->POST_NAME); return Redirect; } sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, skin); if(CacheState(skin_file->filename, NULL) >=0 || isfile(skin_file->filename)) { if(strlen(post)==0) return TreaList; settreafile(pf->POST_NAME, board->filename, post); return TreaRead; } if(isList(skin, &(pf->list_start), &(pf->list_end))) { if(strlen(post)==0) settreafile(pf->POST_NAME, board->filename, DIR_REC); else sprintf(pf->POST_NAME, "treasure/%s/%s/%s", boardname, post, DIR_REC); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_TreaList); return TreaList; } else { settreafile(skin_file->filename, boardname, skin); return Board; } } else if((p = strstr(curi, "/boards/")) != NULL) { /* subdir/board/bname/ subdir/board/bname/start-end subdir/board/bname/post */ xstrncpy(BBS_SUBDIR, curi+1, p-curi+1); curi = p + 8; GetURIToken(boardname, post, skin, curi); #if 0 fprintf(fp_out, "[BOARDNAME=%s, post=%s, skin=%s]<br>", boardname, post, skin); fflush(fp_out); #endif if(HttpRequestType == POST) { xstrncpy(pf->POST_NAME, post, PATHLEN); if(!strcmp(skin, POST_PostSend)) return PostSend; else if(!strcmp(skin, POST_PostEdit)) return PostEdit; else if(!strcmp(skin, POST_PostForward)) return PostForward; else if(!strcmp(skin, POST_PostDelete)) return PostDelete; else if(!strcmp(skin, POST_BoardModify)) return BoardModify; else if(!strcmp(skin, POST_SkinModify)) return SkinModify; else if(!strcmp(skin, POST_AccessListModify)) return AccessListModify; else return Board; } if(strlen(boardname)==0) { /* case: /boards/ /boards/boardname */ if(strlen(skin)==0) { sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_BoardList); return BoardList; } else { /* skin is boardname */ sprintf(skin_file->filename, "/%sboards/%s/", BBS_SUBDIR, skin); return Redirect; } } if(strlen(skin)==0) { /* case: /boards/boardname/ */ sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_PostList); setboardfile(pf->POST_NAME, boardname, DIR_REC); return PostList; } if(isList(skin, &(pf->list_start), &(pf->list_end))) { setboardfile(pf->POST_NAME, board->filename, DIR_REC); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_PostList); return PostList; } if(isPost(skin)) { strip_html(skin); setboardfile(pf->POST_NAME, boardname, skin); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_Post); return PostRead; } sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, skin); if(CacheState(skin_file->filename, NULL) >=0 || isfile(skin_file->filename)) { if(strlen(post)==0) /* is DIR_REC skin */ { if(!strcmp(skin, HTML_SkinModify)) { *(pf->POST_NAME) = '\0'; return SkinModify; } else { setboardfile(pf->POST_NAME, boardname, DIR_REC); return PostList; } } else /* is post skin */ { sprintf(pf->POST_NAME, "%s%s%s", HTML_PATH, BBS_SUBDIR, post); if(isfile(pf->POST_NAME)) { sprintf(pf->POST_NAME, "%s%s%s", HTML_PATH, BBS_SUBDIR, post); return SkinModify; } else { setboardfile(pf->POST_NAME, board->filename, post); return PostRead; } } } setboardfile(skin_file->filename, boardname, skin); return Board; } else if((p = strstr(curi, "/mail/")) != NULL) { xstrncpy(BBS_SUBDIR, curi+1, p-curi+1); curi = p + 6; GetURIToken(boardname, post, skin, curi); #if 0 fprintf(fp_out, "[BOARDNAME=%s, post=%s, skin=%s]<br>", boardname, post, skin); fflush(fp_out); #endif if(HttpRequestType == POST) { xstrncpy(pf->POST_NAME, boardname, PATHLEN); if(!strcmp(skin, POST_MailSend)) return MailSend; else if(!strcmp(skin, POST_MailForward)) return MailForward; else if(!strcmp(skin, POST_MailDelete)) return MailDelete; else return OtherFile; } /* !! 'BOARDNAME' is 'post' in this section !! */ #if 0 if(strlen(boardname)==0 && strlen(skin)==0) { sprintf(skin_file->filename, "%s%s", BBS_SUBDIR, HTML_MailList); setmailfile(pf->POST_NAME, username, DIR_REC); return MailList; } #endif if(strlen(skin)==0) { sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_MailList); setmailfile(pf->POST_NAME, username, DIR_REC); return MailList; } if(isList(skin, &(pf->list_start), &(pf->list_end))) { setmailfile(pf->POST_NAME, username, DIR_REC); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_MailList); return MailList; } if(isPost(skin)) { strip_html(skin); setmailfile(pf->POST_NAME, username, skin); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_Mail); return MailRead; } sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, skin); if(CacheState(skin_file->filename, NULL) >=0 || isfile(skin_file->filename)) { if(strlen(board->filename) != 0) { setmailfile(pf->POST_NAME, username, boardname); return MailRead; } else { setmailfile(pf->POST_NAME, username, DIR_REC); return MailList; } } setmailfile(skin_file->filename, username, skin); return Mail; } else if((p = strstr(curi, "/users/")) != NULL) { xstrncpy(BBS_SUBDIR, curi+1, p-curi+1); curi = p + 7; GetURIToken(board->filename, post, skin, curi); #if 0 fprintf(fp_out, "[BOARDNAME=%s, post=%s, skin=%s]", board->filename, post, skin); fflush(fp_out); #endif if(HttpRequestType == POST) { if(!strcmp(skin, POST_UserNew)) return UserNew; else if(!strcmp(skin, POST_UserIdent)) return UserIdent; else if(!strcmp(skin, POST_UserData)) return UserData; else if(!strcmp(skin, POST_UserPlan)) return UserPlan; else if(!strcmp(skin, POST_UserSign)) return UserSign; else if(!strcmp(skin, POST_UserFriend)) return UserFriend; else return OtherFile; } if(strlen(skin)==0) { if(strlen(board->filename)!=0) { xstrncpy(username, board->filename, IDLEN); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_UserQuery); return UserQuery; } else { sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_UserList); return UserList; } } if(isList(skin, &(pf->list_start), &(pf->list_end))) { sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_UserList); return UserList; } sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, skin); if(CacheState(skin_file->filename, NULL) >=0 || isfile(skin_file->filename)) return UserData; xstrncpy(username, skin, IDLEN); sprintf(skin_file->filename, "%s%s%s", HTML_PATH, BBS_SUBDIR, HTML_UserQuery); return UserQuery; } else if(!strncmp(curi, "/~", 2)) /* want user planfile only */ { curi+=2; #if 0 fprintf(fp_out, "userplan name=%s ", curi); fflush(fp_out); #endif xstrncpy(username, curi, IDLEN); strtok(username, " /\t\r\n"); sprintf(skin_file->filename, "%s%s", HTML_PATH, HTML_UserPlanShow); return UserQuery; } else { #if 0 fprintf(fp_out, "[other file=%s]", curi); fflush(fp_out); #endif #ifdef NSYSUBBS /* for compatiable with old URL parameter ================== */ if((p = strstr(curi, "BoardName=")) != NULL || (p = strstr(curi, "boardname=")) != NULL) { p+=10; strtok(p, "?&/"); sprintf(skin_file->filename, "/txtVersion/boards/%s/", p); return Redirect; } /* ========================================================= */ #endif xstrncpy(skin_file->filename, curi, PATHLEN); xstrncpy(BBS_SUBDIR, curi+1, PATHLEN); if((p = strrchr(BBS_SUBDIR, '/')) != NULL) *(p+1) = 0x00; else BBS_SUBDIR[0] = 0x00; return OtherFile; } }
static void text_disp(const waypoint *wpt) { int latint, lonint; char tbuf[1024]; time_t tm = wpt->creation_time; gbint32 utmz; double utme, utmn; char utmzc; char *tmpout1, *tmpout2; char *altout; fs_xml *fs_gpx; waypoint_count++; if (split_output) { char *thisfname; xasprintf(&thisfname, "%s%d", output_name, waypoint_count); file_out = gbfopen(thisfname, "w", MYNAME); } lonint = abs((int) wpt->longitude); latint = abs((int) wpt->latitude); GPS_Math_WGS84_To_UTM_EN(wpt->latitude, wpt->longitude, &utme, &utmn, &utmz, &utmzc); if (tm == 0) tm = time(NULL); strftime(tbuf, sizeof(tbuf), "%d-%b-%Y", localtime(&tm)); tmpout1 = pretty_deg_format(wpt->latitude, wpt->longitude, degformat[2], " ", 0); if (wpt->altitude != unknown_alt) { xasprintf(&altout, " alt:%d", (int) ( (altunits[0]=='f')?METERS_TO_FEET(wpt->altitude):wpt->altitude) ); } else { altout = ""; } xasprintf (&tmpout2, "%s (%d%c %6.0f %7.0f)%s", tmpout1, utmz, utmzc, utme, utmn, altout ); gbfprintf(file_out, "%-16s %59s\n", (global_opts.synthesize_shortnames) ? mkshort_from_wpt(mkshort_handle, wpt) : wpt->shortname, tmpout2); xfree(tmpout2); xfree(tmpout1); if (altout[0]) xfree(altout); if (strcmp(wpt->description, wpt->shortname)) { gbfprintf(file_out, "%s", wpt->description); if (wpt->gc_data->placer) gbfprintf(file_out, " by %s", wpt->gc_data->placer); } if (wpt->gc_data->terr) { gbfprintf(file_out, " - %s / %s - (%d%s / %d%s)\n", gs_get_cachetype(wpt->gc_data->type), gs_get_container(wpt->gc_data->container), (int)(wpt->gc_data->diff / 10), (wpt->gc_data->diff%10)?".5":"", (int)(wpt->gc_data->terr / 10), (wpt->gc_data->terr%10)?".5":"" ); if (wpt->gc_data->desc_short.utfstring) { char *stripped_html = strip_html(&wpt->gc_data->desc_short); gbfprintf (file_out, "\n%s\n", stripped_html); xfree(stripped_html); } if (wpt->gc_data->desc_long.utfstring) { char *stripped_html = strip_html(&wpt->gc_data->desc_long); gbfprintf (file_out, "\n%s\n", stripped_html); xfree(stripped_html); } if (wpt->gc_data->hint) { char *hint = NULL; if ( txt_encrypt ) hint = rot13( wpt->gc_data->hint ); else hint = xstrdup( wpt->gc_data->hint ); gbfprintf (file_out, "\nHint: %s\n", hint); xfree( hint ); } } else if (wpt->notes && (!wpt->description || strcmp(wpt->notes,wpt->description))) { gbfprintf (file_out, "\n%s\n", wpt->notes); } fs_gpx = NULL; if ( includelogs ) { fs_gpx = (fs_xml *)fs_chain_find( wpt->fs, FS_GPX); } if ( fs_gpx && fs_gpx->tag ) { xml_tag *root = fs_gpx->tag; xml_tag *curlog = NULL; xml_tag *logpart = NULL; curlog = xml_findfirst( root, "groundspeak:log" ); while ( curlog ) { time_t logtime = 0; struct tm *logtm = NULL; gbfprintf( file_out, "\n" ); logpart = xml_findfirst( curlog, "groundspeak:type" ); if ( logpart ) { gbfprintf( file_out, "%s by ", logpart->cdata ); } logpart = xml_findfirst( curlog, "groundspeak:finder" ); if ( logpart ) { gbfprintf( file_out, "%s on ", logpart->cdata ); } logpart = xml_findfirst( curlog, "groundspeak:date" ); if ( logpart ) { logtime = xml_parse_time( logpart->cdata, NULL); logtm = localtime( &logtime ); if ( logtm ) { gbfprintf( file_out, "%4.4d-%2.2d-%2.2d\n", logtm->tm_year+1900, logtm->tm_mon+1, logtm->tm_mday ); } } logpart = xml_findfirst( curlog, "groundspeak:log_wpt" ); if ( logpart ) { char *coordstr = NULL; float lat = 0; float lon = 0; coordstr = xml_attribute( logpart, "lat" ); if ( coordstr ) { lat = atof( coordstr ); } coordstr = xml_attribute( logpart, "lon" ); if ( coordstr ) { lon = atof( coordstr ); } coordstr = pretty_deg_format(lat, lon, degformat[2], " ", 0); gbfprintf( file_out, "%s\n", coordstr); xfree(coordstr); } logpart = xml_findfirst( curlog, "groundspeak:text" ); if ( logpart ) { char *encstr = NULL; char *s = NULL; int encoded = 0; encstr = xml_attribute( logpart, "encoded" ); encoded = (encstr[0] != 'F'); if ( txt_encrypt && encoded ) { s = rot13( logpart->cdata ); } else { s = xstrdup( logpart->cdata ); } gbfprintf( file_out, "%s", s ); xfree( s ); } gbfprintf( file_out, "\n" ); curlog = xml_findnext( root, curlog, "groundspeak:log" ); } } if (! suppresssep) gbfprintf(file_out, "\n-----------------------------------------------------------------------------\n"); else gbfprintf(file_out, "\n"); if (split_output) { gbfclose(file_out); file_out = NULL; } }
int toc_main_interface(int type, char **args) { switch (type) { case TOC_IM_IN: { char *msg, *nick; nick = rm_space(args[0]); msg = strip_html(args[1]); RemoveFromLLByKey(msgdus,nick); AddToLL(msgdus,nick,NULL); msgprintf("%s", cparse(fget_string_var(FORMAT_MSG_FSET), "%s %s %s %s",update_clock(GET_TIME), nick, "AIM", msg)); if ( is_away ) serv_send_im(args[0],away_message); free(nick); break; } case TOC_TRANSLATED_ERROR: case TOC_CONNECT_MSGS: statusprintf(args[0]); break; case TOC_BUDDY_LOGGED_OFF: statusprintf("%s logged off",args[0]); if ( get_dllint_var("aim_window") ) build_aim_status(get_window_by_name("AIM")); break; case TOC_BUDDY_LOGGED_ON: statusprintf("%s logged on", args[0]); if ( get_dllint_var("aim_window") ) build_aim_status(get_window_by_name("AIM")); break; case TOC_EVILED: statusprintf("You have been warned by %s.", ((args[0] == NULL) ? "an anonymous person" : args[0])); statusprintf("Your new warning level is %s%%" , args[1]); if ( get_dllint_var("aim_window") ) build_aim_status(get_window_by_name("AIM")); break; case TOC_CHAT_JOIN: chatprintf("Joined buddy chat %s",args[1]); strncpy(current_chat,args[1],511); break; case TOC_BUDDY_LEFT_CHAT: chatprintf("%s left %s",args[1],args[0]); break; case TOC_BUDDY_JOIN_CHAT: chatprintf("%s joined %s",args[1],args[0]); break; case TOC_CHAT_LEFT: chatprintf("Left chat id: %s",args[0]); break; case TOC_CHAT_IN: { char *e,*name,*chat; /* chatprintf("got msg from chat: <%s@AIM> %s",args[1],args[3]); */ /* Need to take better action here */ e = strip_html(args[3]); name = rm_space(args[1]); chat = rm_space(args[4]); msgprintf("%s",cparse(fget_string_var(FORMAT_PUBLIC_OTHER_FSET), "%s %s %s %s", update_clock(GET_TIME), name, chat, e)); free(name); free(chat); break; } case TOC_GOTO_URL: statusprintf("GOTO_URL: %s",args[0]); break; case TOC_CHAT_INVITE: statusprintf("Invited to %s by %s '%s'",args[0],args[2],args[3]); break; case TOC_LAG_UPDATE: case TOC_WENT_IDLE: if ( get_dllint_var("aim_window") ) build_aim_status(get_window_by_name("AIM")); break; case TOC_DIR_STATUS: if ( atoi(args[0]) == 1 ) statusprintf("Directory information successfully changed."); else statusprintf("Error altering directory information, error code: %s",args[0]); break; default: statusprintf("INTERNAL ERROR: Unknown toc type: %d",type); } return 1; }