コード例 #1
0
ファイル: ldb_cache_stat.cpp プロジェクト: xiangyong/platform
 void CacheStat::print_sentinel(const cache_stat* stat)
 {
   if (sentinel_valid(stat))
   {
     fprintf(stderr, "%s\n", get_time_str(stat).c_str());
   }
 }
コード例 #2
0
ファイル: friendlist.c プロジェクト: JFreegman/toxic
static void friendlist_onMessage(ToxWindow *self, Tox *m, uint32_t num, Tox_Message_Type type, const char *str,
                                 size_t length)
{
    if (num >= Friends.max_idx) {
        return;
    }

    if (Friends.list[num].chatwin != -1) {
        return;
    }

    if (get_num_active_windows() < MAX_WINDOWS_NUM) {
        Friends.list[num].chatwin = add_window(m, new_chat(m, Friends.list[num].num));
        return;
    }

    char nick[TOX_MAX_NAME_LENGTH];
    get_nick_truncate(m, nick, num);

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(prompt, timefrmt, nick, NULL, IN_MSG, 0, 0, "%s", str);
    line_info_add(prompt, NULL, NULL, NULL, SYS_MSG, 0, RED, "* Warning: Too many windows are open.");
    sound_notify(prompt, notif_error, NT_WNDALERT_1, NULL);
}
コード例 #3
0
ファイル: friendlist.c プロジェクト: ooesili/toxic
static void friendlist_onMessage(ToxWindow *self, Tox *m, int32_t num, uint8_t *str, uint16_t len)
{
    if (num >= max_friends_index)
        return;

    if (friends[num].chatwin == -1) {
        if (get_num_active_windows() < MAX_WINDOWS_NUM) {
            friends[num].chatwin = add_window(m, new_chat(m, friends[num].num));
        } else {
            str[len] = '\0';

            uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'};
            int n_len = tox_get_name(m, num, nick);
            n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);
            nick[n_len] = '\0';

            uint8_t timefrmt[TIME_STR_SIZE];
            get_time_str(timefrmt);

            line_info_add(prompt, timefrmt, nick, NULL, str, IN_MSG, 0, 0);

            uint8_t *msg = "* Warning: Too many windows are open.";
            line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, RED);
            alert_window(prompt, WINDOW_ALERT_1, true);
        }
    }
}
コード例 #4
0
ファイル: groupchat.c プロジェクト: subliun/toxic
/* Waits GROUP_EVENT_WAIT seconds for a new peer to set their name before announcing them */
void *group_add_wait(void *data)
{
    struct group_add_thrd *thrd = (struct group_add_thrd *) data;
    ToxWindow *self = thrd->self;
    Tox *m = thrd->m;
    char peername[TOX_MAX_NAME_LENGTH];

    /* keep polling for a name that differs from the default until we run out of time */
    while (true) {
        usleep(100000);

        pthread_mutex_lock(&Winthread.lock);
        get_group_nick_truncate(m, peername, thrd->peernum, thrd->groupnum);

        if (strcmp(peername, DEFAULT_TOX_NAME) || timed_out(thrd->timestamp, GROUP_EVENT_WAIT)) {
            pthread_mutex_unlock(&Winthread.lock);
            break;
        }

        pthread_mutex_unlock(&Winthread.lock);
    }

    const char *event = "has joined the room";
    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    pthread_mutex_lock(&Winthread.lock);
    line_info_add(self, timefrmt, (char *) peername, NULL, CONNECTION, 0, GREEN, event);
    write_to_log(event, (char *) peername, self->chatwin->log, true);
    pthread_mutex_unlock(&Winthread.lock);

    pthread_attr_destroy(&thrd->attr);
    free(thrd);
    pthread_exit(NULL);
}
コード例 #5
0
ファイル: groupchat.c プロジェクト: subliun/toxic
static void groupchat_onGroupAction(ToxWindow *self, Tox *m, int groupnum, int peernum, const char *action,
                                    uint16_t len)
{
    if (self->num != groupnum)
        return;

    ChatContext *ctx = self->chatwin;

    char nick[TOX_MAX_NAME_LENGTH];
    get_group_nick_truncate(m, nick, peernum, groupnum);

    char selfnick[TOX_MAX_NAME_LENGTH];
    tox_self_get_name(m, (uint8_t *) selfnick);

    size_t n_len = tox_self_get_name_size(m);
    selfnick[n_len] = '\0';

    if (strcasestr(action, selfnick)) {
        sound_notify(self, generic_message, NT_WNDALERT_0, NULL);

        if (self->active_box != -1)
            box_silent_notify2(self, NT_NOFOCUS, self->active_box, "* %s %s", nick, action );
        else
            box_silent_notify(self, NT_NOFOCUS, &self->active_box, self->name, "* %s %s", nick, action);
    }
    else {
        sound_notify(self, silent, NT_WNDALERT_1, NULL);
    }

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(self, timefrmt, nick, NULL, IN_ACTION, 0, 0, "%s", action);
    write_to_log(action, nick, ctx->log, true);
}
コード例 #6
0
ファイル: groupchat.c プロジェクト: subliun/toxic
static void groupchat_onGroupTitleChange(ToxWindow *self, Tox *m, int groupnum, int peernum, const char *title,
        uint8_t length)
{
    ChatContext *ctx = self->chatwin;

    if (self->num != groupnum)
        return;

    set_window_title(self, title, length);

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    /* don't announce title when we join the room */
    if (!timed_out(groupchats[self->num].start_time, GROUP_EVENT_WAIT))
        return;

    char nick[TOX_MAX_NAME_LENGTH];
    get_group_nick_truncate(m, nick, peernum, groupnum);
    line_info_add(self, timefrmt, nick, NULL, NAME_CHANGE, 0, 0, " set the group title to: %s", title);

    char tmp_event[MAX_STR_SIZE];
    snprintf(tmp_event, sizeof(tmp_event), "set title to %s", title);
    write_to_log(tmp_event, nick, ctx->log, true);
}
コード例 #7
0
ファイル: log.c プロジェクト: FuzzyHobbit/mordor
void logn(char *filename, char *str)
{
	char	buffer[4196];
	char    path[256];
    int     fd;

	ASSERTLOG( filename );
	ASSERTLOG( str );

    sprintf(path, "%s/%s", get_log_path(), filename);
    fd = open(path, O_RDWR | O_APPEND | O_BINARY );
    if(fd < 0) 
	{
        fd = open(path, O_RDWR | O_CREAT | O_BINARY, ACC);
        if(fd < 0) 
			return;
    }
    lseek(fd, 0L, 2);

	/* put a time stamp on everything */
	sprintf(buffer, "%s: %s\n", get_time_str(), str );
    write(fd, buffer, strlen(buffer));

    close(fd);

	return;
}
コード例 #8
0
int reply_normal_information(unsigned char* send_buf,unsigned char * file_buf,int file_size,char *mime_type)
{
	char * str="HTTP/1.1 200 OK\r\nServer:Han/linux/(0.1)\r\nDate:";
	register int index=strlen(str);
	memcpy(send_buf,str,index);
	char time_buf[TIME_BUFFER_SIZE];
	memset(time_buf,'\0',sizeof(time_buf));
	str=get_time_str(time_buf);
	int len=strlen(time_buf);
	memcpy(send_buf+index,time_buf,len);
	index+=len;
	len=strlen(ALLOW);
	memcpy(send_buf+index,ALLOW,len);
	index+=len;
	memcpy(send_buf+index,"\r\nContent-Type:",15);
	index+=15;
	len=strlen(mime_type);
	memcpy(send_buf+index,mime_type,len);
	index+=strlen(mime_type);
	memcpy(send_buf+index,"\r\nContent-Length:",17);
	index+=17;
	char num_len[8];
	memset(num_len,'\0',sizeof(num_len));
	sprintf(num_len,"%d",file_size);
	len=strlen(num_len);
	memcpy(send_buf+index,num_len,len);
	index+=len;
	memcpy(send_buf+index,"\r\n\r\n",4);
	index+=4;

	memcpy(send_buf+index,file_buf,file_size);
	index+=file_size;
	return index;
}
コード例 #9
0
ファイル: prompt.c プロジェクト: h4ck3rm1k3/toxic
static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int32_t friendnum , uint8_t status)
{
    if (friendnum < 0)
        return;

    ChatContext *ctx = self->chatwin;

    uint8_t nick[TOX_MAX_NAME_LENGTH] = {0};
    int n_len = tox_get_name(m, friendnum, nick);
    n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1);

    if (!nick[0]) {
        snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);
        n_len = strlen(UNKNOWN_NAME);
    }

    nick[n_len] = '\0';

    uint8_t timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));
    uint8_t *msg;

    if (status == 1) {
        msg = "has come online";
        line_info_add(self, timefrmt, nick, NULL, msg, CONNECTION, 0, GREEN);
        write_to_log(msg, nick, ctx->log, true);
        alert_window(self, WINDOW_ALERT_2, false);
    } else {
        msg = "has gone offline";
        line_info_add(self, timefrmt, nick, NULL, msg, CONNECTION, 0, RED);
        write_to_log(msg, nick, ctx->log, true);
    }
}
コード例 #10
0
ファイル: prompt.c プロジェクト: h4ck3rm1k3/toxic
static void prompt_onFriendRequest(ToxWindow *self, Tox *m, const uint8_t *key, const uint8_t *data,
                                   uint16_t length)
{
    ChatContext *ctx = self->chatwin;

    uint8_t timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    uint8_t msg[MAX_STR_SIZE];
    snprintf(msg, sizeof(msg), "Friend request with the message '%s'", data);
    line_info_add(self, timefrmt, NULL, NULL, msg, SYS_MSG, 0, 0);
    write_to_log(msg, "", ctx->log, true);

    int n = add_friend_request(key);

    if (n == -1) {
        uint8_t *errmsg = "Friend request queue is full. Discarding request.";
        line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0);
        write_to_log(errmsg, "", ctx->log, true);
        return;
    }

    snprintf(msg, sizeof(msg), "Type \"/accept %d\" to accept it.", n);
    line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0);
    alert_window(self, WINDOW_ALERT_1, true);
}
コード例 #11
0
ファイル: http_session.c プロジェクト: wcf873455992/ubuntu
int set_error_information(unsigned char *send_buf, int errorno)
{
    register int index = 0;
    register int len = 0;
    char *str = NULL;
    switch(errorno)
    {

        case FILE_NOT_FOUND:
            printf("In set_error_information FILE_NOT_FOUND case\n");
            str = "HTTP/1.1 404 File Not Found\r\n";
            len = strlen(str);
            memcpy(send_buf + index, str, len);
            index += len;

            len = strlen(SERVER);
            memcpy(send_buf + index, SERVER, len);
            index += len;

            memcpy(send_buf + index, "\r\nDate:", 7);            
            index += 7;
            
            char time_buf[TIME_BUFFER_SIZE];
            memset(time_buf, '\0', sizeof(time_buf));
            get_time_str(time_buf);
            len = strlen(time_buf);
            memcpy(send_buf + index, time_buf, len);
            index += len;

            str = "\r\nContent-Type:text/html\r\nContent-Length:";
            len = strlen(str);
            memcpy(send_buf + index, str, len);
            index += len;
            
            str = "\r\n\r\n<html><head></head><body>404 File not found<br/>Please check your url,and try it again!</body></html>";
            len = strlen(str);
            int htmllen = len;
            char num_len[5];
            memset(num_len, '\0', sizeof(num_len));
            sprintf(num_len, "%d", len);

            len = strlen(num_len);
            memcpy(send + index, num_len, len);
            index += len;

            memcpy(send_buf + index, str, htmllen);
            index += htmllen;
            break;
        

        default:
            break;
        
    }
    return index;
}
コード例 #12
0
ファイル: main.c プロジェクト: swilmet/ingi1113-projet-pic
static void print_alarm (void)
{
    if (_alarm_set)
    {
        char str[STR_SIZE] = {NULL};
        get_time_str (&_alarm, str);
        print_down_right (str);
    }
    else
        print_down_right (ALARM_OFF);
}
コード例 #13
0
int set_error_information(unsigned char * send_buf,int errorno)
{
	register int index=0;
	register int len=0;
	char *str=NULL;
	switch(errorno)
	{
		case FILE_NOT_FOUND:
			printf("int set_error_information FILE_NOT_FOOUND case \n");
			str="HTTP/1.1 404 File Not Found\r\n";
			len=strlen(str);
			memcpy(send_buf+index,str,len);
			index +=len;
			len=strlen(SERVER);
			memcpy(send_buf+index,SERVER,len);
			index +=len;
			memcpy(send_buf+index,"\r\nDate:",7);
			index +=7;
			char time_buf[TIME_BUFFER_SIZE];
			memset(time_buf,'\0',sizeof(time_buf));
			get_time_str(time_buf);
			len=strlen(time_buf);
			memcpy(send_buf+index,time_buf,len);
			index +=len;
			str="Content-Type:text/html\r\nContent-Length:";
			len=strlen(str);
			memcpy(send_buf+index,str,len);
			index+=len;
			str="<html><head><style>body{background-color:#123} h4{font-size:1cm;text-align:center;color:red;text-shadow:0 0 2mm green}</style></head><body><h4>404 file not found please check you url and try it again</h4> </body></html>";
//			printf("str======%s\n",str);
			len=strlen(str);
			int htmllen=len;
			char num_len[5];
			memset(num_len,'\0',sizeof(num_len));
			sprintf(num_len,"%d",len);
			len=strlen(num_len);
			memcpy(send_buf+index,num_len,len);
			index+=len;
			memcpy(send_buf+index,"\r\n\r\n",4);
			index +=4;
			memcpy(send_buf+index,str,htmllen);
			index+=htmllen;
			break;
		default:
			break;

	}
	return index;

}
コード例 #14
0
ファイル: filter_dynamictext.c プロジェクト: Metacowboy/mlt
/** Perform substitution for keywords that are enclosed in "# #".
*/
static void substitute_keywords(mlt_filter filter, char* result, char* value, mlt_frame frame)
{
	char keyword[MAX_TEXT_LEN] = "";
	int pos = 0;
	int is_keyword = 0;

	while ( get_next_token(value, &pos, keyword, &is_keyword) )
	{
		if(!is_keyword)
		{
			strncat( result, keyword, MAX_TEXT_LEN - strlen( result ) - 1 );
		}
		else if ( !strcmp( keyword, "timecode" ) )
		{
			get_timecode_str( filter, frame, result );
		}
		else if ( !strcmp( keyword, "frame" ) )
		{
			get_frame_str( filter, frame, result );
		}
		else if ( !strcmp( keyword, "filedate" ) )
		{
			get_filedate_str( filter, frame, result );
		}
		else if ( !strcmp( keyword, "localfiledate" ) )
		{
			get_localfiledate_str( filter, frame, result );
		}
		else if ( !strcmp( keyword, "resource" ) )
		{
			get_resource_str( filter, frame, result );
		}
                else if ( !strcmp( keyword, "time" ) )
		{
			get_time_str( filter, frame, result );
		}
		else
		{
			// replace keyword with property value from this frame
			mlt_properties frame_properties = MLT_FRAME_PROPERTIES( frame );
			char *frame_value = mlt_properties_get( frame_properties, keyword );
			if( frame_value )
			{
				strncat( result, frame_value, MAX_TEXT_LEN - strlen(result) - 1 );
			}
		}
	}
}
コード例 #15
0
ファイル: main.c プロジェクト: ejrh/snmp
static void log_message(SNMPMessage *message, char *sender_host)
{
    char *host_str = sender_host;
    char timestamp_str[20];
    char *oid_str;
    char *value_str;
    int i = 0;
    
    get_time_str(timestamp_str, sizeof(timestamp_str));
    
    while (snmp_get_varbind_as_string(message, i, &oid_str, NULL, &value_str))
    {
        printf("%s\t%s\t%s\t%s\n", host_str, timestamp_str, oid_str, value_str);
        i++;
    }
}
コード例 #16
0
ファイル: ui.c プロジェクト: equinoxorg/standalone_v2
void lcd_debug_display (void)
{
	unsigned char j;

	//Unlock Count
	lcd_clear();
	//lcd_write_string_XY(0, 0, "Unlock Count:");
	lcd_write_int_XY(0, 1, local_ee_data.unlock_count);
	os_dly_wait(300);
	
	//Box ID
	lcd_clear();
	//lcd_write_string_XY(0, 0, "Box_ID:");
	lcd_write_int(local_ee_data.box_id);
	os_dly_wait(300);
	
	//Full Unlock
	lcd_clear();
	if (local_ee_data.full_unlock == EE_FULL_UNLOCK_CODE) {
		lcd_write_string("Full Unlock");
	} else {
		lcd_write_string("Not Full Unlock");
	}
	os_dly_wait(300);
	/*
	lcd_clear();
	lcd_write_int(get_unlock_days ());
	os_dly_wait(300);
	*/
	//RTC Test
	for (j = 0; j < 50; j++) {
		char str[16];
		lcd_clear();
		
		get_time_str(&str[0]);
		lcd_write_string_XY(0,0, str);

		str[0] = '\0';
		get_date_str(&str[0]);
		lcd_write_string_XY(0,1, str);
		
		//200ms delay
		os_dly_wait(20);
	}
	
	lcd_clear();
}
コード例 #17
0
ファイル: chat.c プロジェクト: prodigeni/toxic
static void chat_onAction(ToxWindow *self, Tox *m, int32_t num, const char *action, uint16_t len)
{
    if (self->num != num)
        return;

    ChatContext *ctx = self->chatwin;

    char nick[TOX_MAX_NAME_LENGTH];
    get_nick_truncate(m, nick, num);

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(self, timefrmt, nick, NULL, ACTION, 0, 0, action);
    write_to_log(action, nick, ctx->log, true);
    notify(self, generic_message, NT_WNDALERT_1 | NT_NOFOCUS);
}
コード例 #18
0
void
debug_trace(char *stuff)
{
	FILE *foo;
	char datetime[18];

	foo = fopen(DEBUG_FILE, "r");
	if (!foo) return;
	fclose(foo);

	get_time_str (datetime, sizeof(datetime));
	foo = fopen(DEBUG_FILE, "a");
	fprintf(foo, "%s: %s", datetime, stuff);
	fflush(foo);
	fclose(foo);
	return;
}
コード例 #19
0
ファイル: cmd_fs.c プロジェクト: hdm/framework2
void ls_dofile(struct stat sb, char * file_name)
{
	char perm[11] = "----------";
	
	if(sb.st_mode & 0400) perm[1] = 'r';
	if(sb.st_mode & 0200) perm[2] = 'w';
	if(sb.st_mode & 0100) perm[3] = 'x';
	if(sb.st_mode & 0040) perm[4] = 'r';
	if(sb.st_mode & 0020) perm[5] = 'w';
	if(sb.st_mode & 0010) perm[6] = 'x';
	if(sb.st_mode & 0004) perm[7] = 'r';
	if(sb.st_mode & 0002) perm[8] = 'w';
	if(sb.st_mode & 0001) perm[9] = 'x';
	if(sb.st_mode & S_ISVTX)
	{
		if(sb.st_mode & 0001)
			perm[9] = 't';
		else
			perm[9] = 'T';
	}
	if(sb.st_mode & S_ISGID)
	{
		if(sb.st_mode & 0010)
			perm[6] = 'S';
		else
			perm[6] = 's';
	}
	if(sb.st_mode & S_ISUID)
	{
		if(sb.st_mode & 0100)
			perm[3] = 'S';
		else
			perm[3] = 's';
	}
	if(S_ISBLK(sb.st_mode)) perm[0] = 'b';
	if(S_ISCHR(sb.st_mode)) perm[0] = 'c';
	if(S_ISDIR(sb.st_mode)) perm[0] = 'd';
	if(S_ISLNK(sb.st_mode)) perm[0] = 'l'; /* XXX: works? */
	if(S_ISFIFO(sb.st_mode)) perm[0] = 'p';
	if(S_ISSOCK(sb.st_mode)) perm[0] = 's';

	printf("%s %3i %s %s %6i %s %s\n", perm, (int)sb.st_nlink, \
		get_uid_str(sb.st_uid), get_gid_str(sb.st_gid), \
		(int)sb.st_size, get_time_str("%b %d %H:%M"), file_name);
}
コード例 #20
0
void
debug_trace_dump(char *stuff, char *bufp, int buflen)
{
	FILE *foo;
	char datetime[18];

	foo = fopen(DEBUG_FILE, "r");
	if (!foo) return;
	fclose(foo);

	get_time_str (datetime, sizeof(datetime));
	foo = fopen(DEBUG_FILE, "a");
	fprintf(foo, "%s: %s", datetime, stuff);
	fprintf(foo, "\ndata:\n");
	hexdump (foo, (u_char *)bufp, buflen);
	fflush(foo);
	fclose(foo);
	return;
}
コード例 #21
0
ファイル: prompt.c プロジェクト: dbruenig/toxic
static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int32_t friendnum , uint8_t status)
{
    if (friendnum < 0)
        return;

    ChatContext *ctx = self->chatwin;

    char nick[TOX_MAX_NAME_LENGTH] = {0};    /* stop removing this initiation */
    get_nick_truncate(m, nick, friendnum);

    if (!nick[0])
        snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));
    const char *msg;

    if (status == 1) {
        msg = "has come online";
        line_info_add(self, timefrmt, nick, NULL, CONNECTION, 0, GREEN, msg);
        write_to_log(msg, nick, ctx->log, true);

        if (self->active_box != -1)
            box_notify2(self, user_log_in, NT_WNDALERT_2 | NT_NOTIFWND | NT_RESTOL, self->active_box, 
                        "%s has come online", nick );
        else
            box_notify(self, user_log_in, NT_WNDALERT_2 | NT_NOTIFWND | NT_RESTOL, &self->active_box,
                       "Toxic", "%s has come online", nick );
    } else {
        msg = "has gone offline";
        line_info_add(self, timefrmt, nick, NULL, CONNECTION, 0, RED, msg);
        write_to_log(msg, nick, ctx->log, true);

        if (self->active_box != -1)
            box_notify2(self, user_log_out, NT_WNDALERT_2 | NT_NOTIFWND | NT_RESTOL, self->active_box, 
                        "%s has gone offline", nick );
        else
            box_notify(self, user_log_out, NT_WNDALERT_2 | NT_NOTIFWND | NT_RESTOL, &self->active_box,
                       "Toxic", "%s has gone offline", nick );
    }
}
コード例 #22
0
ファイル: BikeComputer.c プロジェクト: darkenk/BikeComputer
void show_default_screen(msg_t *msg)
{
    LCD_GoTo(8,0);
    get_time_str(string_buff);
    LCD_WriteText(string_buff);
    LCD_GoTo(4, 0);
    LCD_WriteText("k/h \0");
    int offset = 1;
    switch(msg->type) {
    case MSG_SECOND_CHANGE:
        offset = calculate_speed() > 99 ? 0 : 1;
        break;
    }
    if (offset > 0) {
        LCD_GoTo(0,0);
        LCD_WriteText(" \0");
    }
    get_current_speed(string_buff);
    LCD_GoTo(offset, 0);
    LCD_WriteText(string_buff);
}
コード例 #23
0
ファイル: prompt.c プロジェクト: SmoothDude/toxic
static void prompt_onFriendRequest(ToxWindow *self, Tox *m, const char *key, const char *data, size_t length)
{
    ChatContext *ctx = self->chatwin;

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(self, timefrmt, NULL, NULL, SYS_MSG, 0, 0, "Friend request with the message '%s'", data);
    write_to_log("Friend request with the message '%s'", "", ctx->log, true);

    int n = add_friend_request(key, data);

    if (n == -1) {
        const char *errmsg = "Friend request queue is full. Discarding request.";
        line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, errmsg);
        return;
    }

    line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Type \"/accept %d\" or \"/decline %d\"", n, n);
    sound_notify(self, generic_message, NT_WNDALERT_1 | NT_NOTIFWND, NULL);
}
コード例 #24
0
ファイル: chat.c プロジェクト: prodigeni/toxic
static void send_action(ToxWindow *self, ChatContext *ctx, Tox *m, char *action)
{
    if (action == NULL)
        return;

    char selfname[TOX_MAX_NAME_LENGTH];
    uint16_t len = tox_get_self_name(m, (uint8_t *) selfname);
    selfname[len] = '\0';

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(self, timefrmt, selfname, NULL, ACTION, 0, 0, action);

    if (tox_send_action(m, self->num, (uint8_t *) action, strlen(action)) == 0) {
        const char *errmsg = " * Failed to send action.";
        line_info_add(self, NULL, selfname, NULL, SYS_MSG, 0, RED, errmsg);
    } else {
        write_to_log(action, selfname, ctx->log, true);
    }
}
コード例 #25
0
ファイル: groupchat.c プロジェクト: subliun/toxic
static void groupchat_onGroupMessage(ToxWindow *self, Tox *m, int groupnum, int peernum,
                                     const char *msg, uint16_t len)
{
    if (self->num != groupnum)
        return;

    ChatContext *ctx = self->chatwin;

    char nick[TOX_MAX_NAME_LENGTH];
    get_group_nick_truncate(m, nick, peernum, groupnum);

    char selfnick[TOX_MAX_NAME_LENGTH];
    tox_self_get_name(m, (uint8_t *) selfnick);

    size_t sn_len = tox_self_get_name_size(m);
    selfnick[sn_len] = '\0';

    int nick_clr = strcmp(nick, selfnick) == 0 ? GREEN : CYAN;

    /* Only play sound if mentioned by someone else */
    if (strcasestr(msg, selfnick) && strcmp(selfnick, nick)) {
        sound_notify(self, generic_message, NT_WNDALERT_0, NULL);

        if (self->active_box != -1)
            box_silent_notify2(self, NT_NOFOCUS, self->active_box, "%s %s", nick, msg);
        else
            box_silent_notify(self, NT_NOFOCUS, &self->active_box, self->name, "%s %s", nick, msg);

        nick_clr = RED;
    }
    else {
        sound_notify(self, silent, NT_WNDALERT_1, NULL);
    }

    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    line_info_add(self, timefrmt, nick, NULL, IN_MSG, 0, nick_clr, "%s", msg);
    write_to_log(msg, nick, ctx->log, false);
}
コード例 #26
0
ファイル: api.c プロジェクト: JFreegman/toxic
void api_send(const char *msg)
{
    if (msg == NULL || self_window->chatwin->cqueue == NULL) {
        return;
    }

    char *name = api_get_nick();
    char  timefrmt[TIME_STR_SIZE];

    if (name == NULL) {
        return;
    }

    self_window = get_active_window();
    get_time_str(timefrmt, sizeof(timefrmt));

    strncpy((char *) self_window->chatwin->line, msg, sizeof(self_window->chatwin->line));
    add_line_to_hist(self_window->chatwin);
    int id = line_info_add(self_window, timefrmt, name, NULL, OUT_MSG, 0, 0, "%s", msg);
    cqueue_add(self_window->chatwin->cqueue, msg, strlen(msg), OUT_MSG, id);
    free(name);
}
コード例 #27
0
ファイル: friendlist.c プロジェクト: prodigeni/toxic
static void friendlist_onMessage(ToxWindow *self, Tox *m, int32_t num, const char *str, uint16_t len)
{
    if (num >= max_friends_index)
        return;

    if (friends[num].chatwin == -1) {
        if (get_num_active_windows() < MAX_WINDOWS_NUM) {
            friends[num].chatwin = add_window(m, new_chat(m, friends[num].num));
            notify(self, generic_message, NT_WNDALERT_0 | NT_NOFOCUS);
        } else {
            char nick[TOX_MAX_NAME_LENGTH];
            get_nick_truncate(m, nick, num);

            char timefrmt[TIME_STR_SIZE];
            get_time_str(timefrmt, sizeof(timefrmt));

            line_info_add(prompt, timefrmt, nick, NULL, IN_MSG, 0, 0, str);

            const char *msg = "* Warning: Too many windows are open.";
            line_info_add(prompt, NULL, NULL, NULL, SYS_MSG, 0, RED, msg);
            notify(prompt, error, NT_WNDALERT_1);
        }
    }
}
コード例 #28
0
ファイル: main.c プロジェクト: swilmet/ingi1113-projet-pic
    static void print_time (void)
{
    char str[STR_SIZE] = {NULL};
    get_time_str (&_time, str);
    print_up_right (str);
}
コード例 #29
0
ファイル: groupchat.c プロジェクト: subliun/toxic
static void groupchat_onGroupNamelistChange(ToxWindow *self, Tox *m, int groupnum, int peernum, uint8_t change)
{
    if (self->num != groupnum)
        return;

    if (groupnum > max_groupchat_index)
        return;

    groupchats[groupnum].num_peers = tox_group_number_peers(m, groupnum);
    int num_peers = groupchats[groupnum].num_peers;

    if (peernum > num_peers)
        return;

    /* get old peer name before updating name list */
    uint8_t oldpeername[TOX_MAX_NAME_LENGTH];

    if (change != TOX_CHAT_CHANGE_PEER_ADD) {
        memcpy(oldpeername, &groupchats[groupnum].oldpeer_names[peernum * TOX_MAX_NAME_LENGTH],
               sizeof(oldpeername));
        uint16_t old_n_len = groupchats[groupnum].oldpeer_name_lengths[peernum];
        oldpeername[old_n_len] = '\0';
    }

    /* Update name/len lists */
    uint8_t tmp_peerlist[num_peers][TOX_MAX_NAME_LENGTH];
    uint16_t tmp_peerlens[num_peers];

    if (tox_group_get_names(m, groupnum, tmp_peerlist, tmp_peerlens, num_peers) == -1) {
        memset(tmp_peerlist, 0, sizeof(tmp_peerlist));
        memset(tmp_peerlens, 0, sizeof(tmp_peerlens));
    }

    copy_peernames(groupnum, tmp_peerlist, tmp_peerlens, num_peers);

    /* get current peername then sort namelist */
    uint8_t peername[TOX_MAX_NAME_LENGTH];

    if (change != TOX_CHAT_CHANGE_PEER_DEL) {
        uint16_t n_len = groupchats[groupnum].peer_name_lengths[peernum];
        memcpy(peername, &groupchats[groupnum].peer_names[peernum * TOX_MAX_NAME_LENGTH], sizeof(peername));
        peername[n_len] = '\0';
    }

    qsort(groupchats[groupnum].peer_names, groupchats[groupnum].num_peers, TOX_MAX_NAME_LENGTH, qsort_strcasecmp_hlpr);

    ChatContext *ctx = self->chatwin;

    const char *event;
    char timefrmt[TIME_STR_SIZE];
    get_time_str(timefrmt, sizeof(timefrmt));

    switch (change) {
    case TOX_CHAT_CHANGE_PEER_ADD:
        if (!timed_out(groupchats[groupnum].start_time, GROUP_EVENT_WAIT))
            break;

        struct group_add_thrd *thrd = malloc(sizeof(struct group_add_thrd));
        thrd->m = m;
        thrd->peernum = peernum;
        thrd->groupnum = groupnum;
        thrd->self = self;
        thrd->timestamp = get_unix_time();

        if (pthread_attr_init(&thrd->attr) != 0) {
            free(thrd);
            return;
        }

        if (pthread_attr_setdetachstate(&thrd->attr, PTHREAD_CREATE_DETACHED) != 0) {
            pthread_attr_destroy(&thrd->attr);
            free(thrd);
            return;
        }

        if (pthread_create(&thrd->tid, &thrd->attr, group_add_wait, (void *) thrd) != 0) {
            pthread_attr_destroy(&thrd->attr);
            free(thrd);
            return;
        }

        break;

    case TOX_CHAT_CHANGE_PEER_DEL:
        event = "has left the room";
        line_info_add(self, timefrmt, (char *) oldpeername, NULL, DISCONNECTION, 0, RED, event);

        if (groupchats[self->num].side_pos > 0)
            --groupchats[self->num].side_pos;

        write_to_log(event, (char *) oldpeername, ctx->log, true);
        break;

    case TOX_CHAT_CHANGE_PEER_NAME:
        if (!timed_out(groupchats[self->num].start_time, GROUP_EVENT_WAIT))
            return;

        /* ignore initial name change (TODO: this is a bad way to do this) */
        if (strcmp((char *) oldpeername, DEFAULT_TOX_NAME) == 0)
            return;

        event = " is now known as ";
        line_info_add(self, timefrmt, (char *) oldpeername, (char *) peername, NAME_CHANGE, 0, 0, event);

        char tmp_event[TOXIC_MAX_NAME_LENGTH * 2 + 32];
        snprintf(tmp_event, sizeof(tmp_event), "is now known as %s", (char *) peername);
        write_to_log(tmp_event, (char *) oldpeername, ctx->log, true);
        break;
    }

    sound_notify(self, silent, NT_WNDALERT_2, NULL);
}
コード例 #30
0
ファイル: http_server.cpp プロジェクト: bluesky4485/workspace
void CHttpServer::parse_openstack_data(void *arg,
		                               struct evhttp_request *req, 
		                               struct evkeyvalq params, 
									   char *post_data)
{

	CHttpServer *pthis = (CHttpServer *)arg;

	struct json_object *fst_obj = NULL, *snd_obj = NULL, *trd_obj = NULL;
	fst_obj = json_tokener_parse(post_data);	
	if (is_error(fst_obj)){
		logerr("parse json cloud data fail!!! data:(%s)", post_data);
		//printf("error parsing json:%s", json_tokener_errors[-(unsigned long)fst_obj]);
        	return;
	}
   
	char tm_buf[64];
	char g_timestamp[32]={0};
	host_data_st host_data;
	vm_data_st vm_data;
	memset((void*)&host_data, 0, sizeof(host_data));
	memset((void*)&vm_data, 0, sizeof(vm_data));

   	if (json_object_get_type(fst_obj) == json_type_array) {
		for (int i=0 ; i<json_object_array_length(fst_obj) ; i++ ){
                        snd_obj = json_object_array_get_idx(fst_obj, i );
			if (NULL == snd_obj) {
				logerr("parse cloud data get snd_obj == NULL!\n");
				json_object_put(fst_obj);
				return;
			}
			json_object_object_foreach(snd_obj, key, val) {
				if (json_object_get_type(val) == json_type_array) {
					for (int j=0; j<json_object_array_length(val); j++) {
						trd_obj = json_object_array_get_idx(val, j);
						if (NULL == trd_obj) {
							logerr("parse cloud data get trd_obj == NULL!\n");
							json_object_put(fst_obj);
							json_object_put(snd_obj);
							return;
						}
						json_object_object_foreach(trd_obj, key, val) {
							
                            /* padding vm data info */
                            if (NULL == val) {
					        logerr("json parse data as NULL!!!");
						 	json_object_put(fst_obj);
						 	json_object_put(snd_obj);
						 	json_object_put(trd_obj);
						 	return;
						 }
						 strcpy(vm_data.iaas_code, host_data.iaas_code);
						 strcpy(vm_data.iaas_host_id, host_data.iaas_host_id);
						 strcpy(vm_data.timestamp, host_data.timestamp);
						 if (strcmp(key, VM_ID)==0)
						 	strcpy(vm_data.iaas_vm_id, json_object_get_string(val));
							else if (strcmp(key, VM_CPU)==0)
								vm_data.cpu_use_rate = json_object_get_double(val);
							else if (strcmp(key, VM_MEM)==0)
								vm_data.memory_use_rate = json_object_get_double(val);
							else if (strcmp(key, VM_IO)==0)
								vm_data.io_use_rate = json_object_get_double(val);
						}
						
						/* 打印虚拟机运行数据日志 */                    
						bzero(&tm_buf, 0);                  
						get_time_str(vm_data.timestamp, tm_buf);
								                                        
					    //pthread_mutex_lock(&pthis->m_mutex);
						logvm("%s %s %s %s %f %f %f",       
							tm_buf,                     
							vm_data.iaas_code,              
							vm_data.iaas_host_id,       								                                vm_data.iaas_vm_id,										                                    vm_data.cpu_use_rate,									                                    vm_data.memory_use_rate,
  							vm_data.io_use_rate);
						//pthread_mutex_unlock(&pthis->m_mutex);
					}
				} else { 
					/* padding host data info */
					if (NULL == val) {
						logerr("json parse host data as NULL!!!");
						json_object_put(fst_obj);
						json_object_put(snd_obj);
						json_object_put(trd_obj);
						return;
					}
					time_t tt = get_time_utc(json_object_get_string(val),
							"%Y-%m-%d %H:%M:%S");
					sprintf(g_timestamp, "%ld", tt);
					if (strcmp(key, IAAS_CODE)==0)
						strcpy(host_data.iaas_code, json_object_get_string(val));
					else if (strcmp(key, HOST_ID)==0)
						strcpy(host_data.iaas_host_id, json_object_get_string(val));
					else if (strcmp(key, TIMESTAMP)==0)
						strcpy(host_data.timestamp, g_timestamp);
					else if (strcmp(key, PM_CPU)==0)
						host_data.cpu_use_rate = json_object_get_double(val);
					else if (strcmp(key, PM_MEM)==0)
						host_data.memory_use_rate = json_object_get_double(val);
					else if (strcmp(key, PM_IO)==0)
						host_data.io_use_rate = json_object_get_double(val);
				}
			}
			
			/* 打印物理主机运行数据 */
			bzero(&tm_buf, 0);
			get_time_str(host_data.timestamp, tm_buf);

			//pthread_mutex_lock(&pthis->m_mutex);  
			loghost("%s %s %s %f %f %f",          
					tm_buf,                       
					host_data.iaas_code,              
				    host_data.iaas_host_id,           
					host_data.cpu_use_rate,           									                        host_data.memory_use_rate,        
					host_data.io_use_rate);           
			//pthread_mutex_unlock(&pthis->m_mutex);
		}

	}