예제 #1
0
파일: possum.c 프로젝트: BitchX/BitchX1.1
int Possum_Init(IrcCommandDll **intp, Function_ptr *global_table) {
  char *tmp = getenv("MAIL");
  
  initialize_module("possum");
  
  MBOX.headers = NULL;
  
  add_module_proc(COMMAND_PROC, "possum", "pmheaders", NULL, 0, 0, pm_headers, NULL);
  add_module_proc(COMMAND_PROC, "possum", "pmcount", NULL, 0, 0, pm_count, NULL);
  add_module_proc(COMMAND_PROC, "possum", "pmlist", NULL, 0, 0, pm_list, NULL);
  add_module_proc(COMMAND_PROC, "possum", "pmread", NULL, 0, 0, pm_read, NULL);
  add_module_proc(COMMAND_PROC, "possum", "pmmailbox", NULL, 0, 0, pm_mailbox, NULL);
  add_module_proc(COMMAND_PROC, "possum", "pmhelp", NULL, 0, 0, pm_help, NULL);

  if (tmp) strncpy(MBOX.filename, tmp, MAX_FNAME_LENGTH);

  put_it("%s Possom Mail %s for BitchX has been excited.", cparse(PM_PROMPT, NULL, NULL), PM_VERSION);
  put_it("%s %s", cparse(PM_PROMPT, NULL, NULL), "Type /PMHELP for help.");
  if (tmp) {
    put_it("%s Using %s for default mail box.", cparse(PM_PROMPT, NULL, NULL), MBOX.filename);
    MBOX.headers = read_mbox(MBOX.filename);
  } else {
    put_it("%s Could not find MAIL in your environment.", cparse(PM_PROMPT, NULL, NULL));
    put_it("%s You will have to manually set it with /PMMAILBOX.", cparse(PM_PROMPT,NULL, NULL));
  }
  return 0;      
}
예제 #2
0
파일: cdrom.c 프로젝트: BitchX/BitchX-SVN
void play_chunk(int start, int end)
{
	struct cdrom_msf msf;

	end--;
	if (start >= end)
		start = end-1;

	msf.cdmsf_min0 = start / (60*75);
	msf.cdmsf_sec0 = (start % (60*75)) / 75;
	msf.cdmsf_frame0 = start % 75;
	msf.cdmsf_min1 = end / (60*75);
	msf.cdmsf_sec1 = (end % (60*75)) / 75;
	msf.cdmsf_frame1 = end % 75;

	if (ioctl(drive, CDROMSTART))
	{
		put_it("%s: Could not start the cdrom",cparse(cdrom_prompt));
		return;
	}
	if (ioctl(drive, CDROMPLAYMSF, &msf))
	{
		put_it("%s: Could not play the track",cparse(cdrom_prompt));
		return;
	}
}
예제 #3
0
파일: cdrom.c 프로젝트: BitchX/BitchX-SVN
int cd_init(char *dev)
{
#if 0
unsigned char msf_ent[3];
unsigned char msf1_ent[3];
#endif
int i, pos;

	if (((drive = open(dev, 0)) < 0))
	{
		if (errno == EACCES)
			put_it("%s: you dont have access to the cdrom driver",cparse(cdrom_prompt));
		return (-1);
	}

	if (ioctl(drive, CDROMREADTOCHDR, &hdr))
	{
		put_it("%s: Can't get TocHeader",cparse(cdrom_prompt));
		return (-2);
	}

#ifndef __FreeBSD__
	for (i=1;i<=hdr.cdth_trk1+1;i++)
	{
		if (i!=hdr.cdth_trk1+1) 
			TocEntry[i].cdte_track = i;
		else 
			TocEntry[i].cdte_track = CDROM_LEADOUT;
		TocEntry[i].cdte_format = CDROM_MSF;
		if (ioctl(drive,CDROMREADTOCENTRY,&TocEntry[i]))
			put_it("%s: Can't get TocEntry #%d",cparse(cdrom_prompt), i);
		else
		{
			TocEntry[i].avoid=TocEntry[i].cdte_ctrl & CDROM_DATA_TRACK ? 1 : 0;
			TocEntry[i].m_length = TocEntry[i].cdte_addr.msf.minute * 60 + TocEntry[i].cdte_addr.msf.second;
			TocEntry[i].m_start = TocEntry[i].m_length * 75 + TocEntry[i].cdte_addr.msf.frame;
		}
	}

	pos = TocEntry[1].m_length;

	for (i=1;i<=hdr.cdth_trk1+1;i++)
	{
		TocEntry[i].m_length = TocEntry[i+1].m_length - pos;
		pos = TocEntry[i+1].m_length;
		if (TocEntry[i].avoid)
			TocEntry[i].m_length = (TocEntry[i+1].m_start - TocEntry[i+1].m_start) *2;
	}
	return (hdr.cdth_trk1);
#else
	for (i = hdr.starting_track; i <= hdr.ending_track; i++)
	{
		TocEntry[i].avoid=0;
		TocEntry[i].m_start=1;
		TocEntry[i].m_length=1;
	}
	return (hdr.ending_track);
#endif
}
예제 #4
0
파일: cdrom.c 프로젝트: BitchX/BitchX-SVN
void set_cd_device(Window *win, char *str, int blah)
{
	if (drive) 
  		close(drive);
	if (!str || !check_mount(str))
	{
		put_it("%s: ERROR: CDROM is already mounted, please unmount, and try again",cparse(cdrom_prompt));
		set_string_var(CD_DEVICE_VAR,NULL);
		return;
	}

	if (cd_init(str) < 0)
	{
		put_it("%s: ERROR: Could not initalize the CDROM, check if a disk is inside",cparse(cdrom_prompt));
		set_string_var(CD_DEVICE_VAR,NULL);
		return;
	}
	put_it("%s: CDROM device is now set to - %s",cparse(cdrom_prompt),str);
	set_string_var(CD_DEVICE_VAR,str);
}
예제 #5
0
파일: cdrom.c 프로젝트: BitchX/BitchX-SVN
static int check_cdrom_str(void)
{
char *str;
	if ((str = get_string_var(CD_DEVICE_VAR)))
	{
		if (!drive)
			cd_init(str);
		return 1;
	}
	put_it("%s: /SET CD_DEVICE  - The name of the CDROM device",cparse(cdrom_prompt));
	return 0;
}
예제 #6
0
파일: test.c 프로젝트: wonghoifung/tips
int 
main() {
  struct reqcontext* ctx = create_reqcontext();

  for (size_t i = 0; i<data_len; ++i) {
    int ret = cparse(ctx, &(data[i]), 1, NULL);
    if (ret != 0) return ret;
  }

  printf("=============\n");
  printf("%s\n", data);
  printf("=============\n");
  char headers[8192] = {0};
  build_headers_string(&ctx->msg, headers, sizeof(headers), 0);
  printf("is headers equal: %d\n", strncmp(headers, data, strlen(headers))==0);

  delete_reqcontext(ctx);
}
예제 #7
0
파일: cmd.c 프로젝트: BitchX/BitchX1.1
void amsg(IrcCommandDll *intp, char *command, char *args, char *subargs, char *helparg) {
	char *nick,*nnick,*loc;
	
	CHECK_TOC_ONLINE();
	
	/* loc = msg, nick = username to send msg to */
	loc = LOCAL_COPY(args);
	nick = new_next_arg(loc, &loc);
	
	REQUIRED_ARG(nick,command,helparg);
	
	if ( nick[0] == '#' ) {
		struct buddy_chat *b;
		nick++;
		REQUIRED_ARG(nick,command,helparg);
		b = (struct buddy_chat *) find_buddy_chat(nick);
		if ( ! b ) {
			statusprintf("Error not on buddy chat %s", nick);
			return;
		}
		/* chatprintf("sent msg %s to buddy chat %s",loc,nick); */
		serv_chat_send(b->id,loc);
	} else {
		char *ruser,*rnick;
		nnick = (char *) malloc(strlen(nick)+10);
		rnick = rm_space(nick);
		ruser = rm_space(get_dllstring_var("aim_user"));
		sprintf(nnick,"%s@AIM",rnick);
		msgprintf("%s", cparse(fget_string_var(FORMAT_SEND_MSG_FSET), 
			"%s %s %s %s",update_clock(GET_TIME), 
			nnick, ruser, loc));
		serv_send_im(nick,loc);
		RemoveFromLLByKey(msgdthem,rnick);
		AddToLL(msgdthem,rnick,NULL);
#ifdef BITCHX_PATCH
		tks.list = 0;
		tks.pos = -1;
#endif		
		free(rnick); free(ruser);
	}	
	
	debug_printf("sending msg to %s '%s'",nick,loc);	
	return;
}
예제 #8
0
파일: toc.c 프로젝트: BitchX/BitchX-SVN
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;
}