Esempio n. 1
0
/* Scan a string for URI escape sequences, replacing them with the
 * decoded octet value in place. Replacing the encoded sequence will
 * cause the string to become shorter. The resulting string will
 * be NUL-terminated.
 */
static void
replace_escape_sequences(char * s, size_t len)
{
	size_t i, j, n;
	int c;

	for(i = j = n = 0 ; i < len ; i++, j++)
	{
		c = s[i];

		if(c == '%' && i+2 < len && is_hex(s[i+1]) && is_hex(s[i+2]))
		{
			c = 16 * hex_to_dec(s[i+1]) + hex_to_dec(s[i+2]);

			i += 2;

			s[j] = c;
		}
		else if (i != j)
		{
			s[j] = c;
		}
	}

	s[j] = '\0';
}
Esempio n. 2
0
uint64_t _str_to_eui64(const char *eui64_str)
{
    int i;
    const char *eui64_rev = &eui64_str[strlen(eui64_str) - 1];
    uint64_t eui64 = 0;

    for (i = 7; i >= 0 || eui64_rev >= eui64_str; i--) {
        uint8_t digit;
        eui64 <<= 8;

        while ((digit = hex_to_dec(*eui64_rev)) == 0xFF) {
            if (--eui64_rev < eui64_str) {
                return eui64;
            }
        }

        eui64 = digit;
        eui64_rev--;

        while ((digit = hex_to_dec(*eui64_rev)) == 0xFF) {
            if (--eui64_rev < eui64_str) {
                return eui64;
            }
        }

        eui64 |= digit << 4;
        eui64_rev--;
    }

    return eui64;
}
int main(int argc,char *argv[])
{
int b1=atoi(argv[1]),b2=atoi(argv[2]);

char a[100];
strcpy(a,argv[3]);
int y=0,ctr1=1;
 for(y=0;y<strlen(a);y++)
 {
   if(a[y]!='0')
   ctr1=0;
 }
 if(ctr1==1)
 {
  printf("0");
  return 0;
 }

 int crrct=check_it_all(a,b1);
 if(!crrct)
 {
   printf("0");
   return 0;
 }
 else if(crrct)
    {
      if(b1==16)
       dec_to_all(hex_to_dec(a),b2);
      else
       dec_to_all(oth_to_dec(a,b1),b2);
    }
return 0;
}
Esempio n. 4
0
int Spider_Http_Client_Base::recv_body_bychunk(int sock, char*& body )
{
	int total_length=0;
	while (true)
	{
		int length=0;
		char buffer[48]={0};
		int ret=recv_endwith_mark(sock, buffer, "\r\n");
		if ( ret>48||ret<2 )
		{
			return -1;
		}
		buffer[ret-2]='\0';
		length=hex_to_dec(buffer);
		if ( length<=0 )
		{
			break;
		}
		total_length+=length;
		body=(char*)realloc(body,total_length);
		ret=recv_body_bylength(sock,body+total_length-length,length);
		if ( ret !=length)
		{
			LLOG(L_ERROR,"recv_body_bychunk::ret isn't equal to length. ");
			break;
		}
		ret=recv_endwith_mark(sock,buffer,"\r\n");
		if ( ret!=2 )
		{
			LLOG(L_ERROR,"recv_endwith_mark:: ret isn't 2");
			break;
		}
	}
	return total_length;
}
Esempio n. 5
0
int main()
{
	char choice; 
	int r, g, b;

	choice = getchar();

	if(choice == 'h')
	{
		hex_to_dec();
	}
	else
	{
		if(choice == 'd')
		{
			scanf("%d, %d, %d", &r, &g, &b);
			printf("#");
			dec_to_hex(r);
			dec_to_hex(g);
			dec_to_hex(b);
			printf("\n");


		}
		else
		{
			return 0;
		}
	}

	return 0;
}
Esempio n. 6
0
static BOOL get_prev_next( fs_handle_type file, LOG_HEADER_T* head )
{
    int             row, col, count;
    UINT32          pos;
    char            buf[ 4 ];
    int             res;

    pos = PREV_NEXT_POS;
    for( row = 0, count = 0; TRUE; ++row )
    {
        for( col = 0; col < 12; ++col )
        {
						pantech_fseek( file, SEEK_SET, pos );
						res = pantech_fread( file, buf, 4 );

            if( res != 4 )
            {
                return FALSE;
            }
            head->prev_[ count ] = hex_to_dec( buf, 2 );
            head->next_[ count ] = hex_to_dec( buf + 2, 2 );

            if( ++count == MAX_LOG )
            {
                return TRUE;
            }
            if( col == 11 )
            {
                pos += 4 + 2 + 16; // 현재 prev/next 4, "\r\n" 2, 공백 16
            }
            else
            {
                pos += 4 + 1; // FF01과 공백
            }
        }
    }

    // 이 곳까지 올 수 없다.
    printk("get_prev_next ASSERT\n");

    return FALSE;
}
Esempio n. 7
0
static UINT32 get_value( fs_handle_type file, UINT32 pos, UINT32 size )
{
    char buf[ 16 ];
    int res;

    pantech_fseek( file, SEEK_SET, pos );
    res = pantech_fread( file, buf, size );

    if( res != size )
    {
        return (UINT32)-1;
    }

    return hex_to_dec( buf + 2, size - 2 );
}
Esempio n. 8
0
int parse_hexstr(char *hex, double *rgba)
{
	if (!hex || hex[0] != '#' || strlen(hex) < 7)
		return 0;

	rgba[0] = (hex_to_dec(hex[1]) * 16 + hex_to_dec(hex[2])) / 255.0;
	rgba[1] = (hex_to_dec(hex[3]) * 16 + hex_to_dec(hex[4])) / 255.0;
	rgba[2] = (hex_to_dec(hex[5]) * 16 + hex_to_dec(hex[6])) / 255.0;

	if (strlen(hex) > 7)
		rgba[3] = atoi(hex + 7) / 100.0;
	else
		rgba[3] = 1.0;

	return 1;
}
Esempio n. 9
0
static ssize_t led_blink_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t size)
{
	struct leds_dev_data *info = dev_get_drvdata(dev);
	struct pm8xxx_led_config *led_cfg;
	unsigned int brightness_r = 0;
	unsigned int brightness_g = 0;
	unsigned int brightness_b = 0;
	unsigned int loop_cnt = 0;
	unsigned int delayon = 0;
	unsigned int delayoff = 0;
	unsigned int argb_count = 0;
	bool is_blinking;

	printk(KERN_ALERT "[LED_blink_store] is \"%s\" (pid %i)\n",
	current->comm, current->pid);
	printk(KERN_ALERT "led_blink input =%s, size=%d\n", buf, size);

	if (size < 7) {
		printk(KERN_DEBUG "led_blink: Invlid input\n");
		return size;
	}
	if (buf[8] == ' ') { /*case of RGB delay_on delay_off*/
		for (loop_cnt = 9; loop_cnt < size-1; loop_cnt++) {
			delayon = delayon*10 + (buf[loop_cnt] - '0');
			if (buf[loop_cnt+1] == ' ') {
				loop_cnt += 2;
				break;
			}
		}
		for (; loop_cnt < size-1; loop_cnt++)
			delayoff = delayoff*10 + (buf[loop_cnt] - '0');
	}
	 else if (buf[10] == ' ') { /*case of ARGB delay_on delay_off*/
		argb_count = 1;
		for (loop_cnt = 11; loop_cnt < size-1; loop_cnt++) {
				delayon = delayon*10 + (buf[loop_cnt] - '0');
				if (buf[loop_cnt+1] == ' ') {
					loop_cnt += 2;
					break;
				}
			}
		for (; loop_cnt < size-1; loop_cnt++)
			delayoff = delayoff*10 + (buf[loop_cnt] - '0');
		}
	 else if (size > 9) {  /*case of ARGB*/
		argb_count = 1;
	}
	atomic_set(&info->op_flag , 0);
	/*buf[0], buf[1] contains 0x, so ignore it. case of RGB*/
	if (!argb_count) {
		brightness_r = hex_to_dec(buf[2], buf[3]);
		brightness_g = hex_to_dec(buf[4], buf[5]);
		brightness_b = hex_to_dec(buf[6], buf[7]);
	}
	/*buf[0], buf[1] contains 0x, so ignore it.
	buf[2], buf[3] contains A (alpha value), ignore it.case of ARGB*/
	 else {
		brightness_r = hex_to_dec(buf[4], buf[5]);
		brightness_g = hex_to_dec(buf[6], buf[7]);
		brightness_b = hex_to_dec(buf[8], buf[9]);
	}

	is_blinking = delayon > 0 || delayoff > 0;

	pm8xxx_led_work_pat_led_off(info);
	mutex_lock(&info->led_work_lock);

	led_cfg = &info->pdata->configs[PM8XXX_LED_PAT8_BLUE];
	brightness_b = brightness_b * 100 / 255;
	led_cfg->pwm_duty_cycles->duty_pcts[0] = is_blinking ? 0 : brightness_b;
	led_cfg->pwm_duty_cycles->duty_pcts[1] = brightness_b;
	pm8xxx_set_led_mode_and_max_brightness(&info->led[PM8XXX_LED_PAT8_BLUE],
				led_cfg->mode, led_cfg->max_current);
	__pm8xxx_led_work(&info->led[PM8XXX_LED_PAT8_BLUE],
			led_cfg->max_current);
	if (led_cfg->mode != PM8XXX_LED_MODE_MANUAL)
		pm8xxx_led_pwm_configure(&info->led[PM8XXX_LED_PAT8_BLUE],
				delayoff, delayon);

	led_cfg = &info->pdata->configs[PM8XXX_LED_PAT8_GREEN];
	brightness_g = brightness_g * 100 / 255;
	led_cfg->pwm_duty_cycles->duty_pcts[0] = is_blinking ? 0 : brightness_g;
	led_cfg->pwm_duty_cycles->duty_pcts[1] = brightness_g;
	pm8xxx_set_led_mode_and_max_brightness(
			&info->led[PM8XXX_LED_PAT8_GREEN],
			led_cfg->mode, led_cfg->max_current);
	__pm8xxx_led_work(&info->led[PM8XXX_LED_PAT8_GREEN],
			led_cfg->max_current);
	if (led_cfg->mode != PM8XXX_LED_MODE_MANUAL)
		pm8xxx_led_pwm_configure(&info->led[PM8XXX_LED_PAT8_GREEN],
				delayoff, delayon);

	led_cfg = &info->pdata->configs[PM8XXX_LED_PAT8_RED];
	brightness_r = brightness_r * 100 / 255;
	led_cfg->pwm_duty_cycles->duty_pcts[0] = is_blinking ? 0 : brightness_r;
	led_cfg->pwm_duty_cycles->duty_pcts[1] = brightness_r;
	pm8xxx_set_led_mode_and_max_brightness(&info->led[PM8XXX_LED_PAT8_RED],
				led_cfg->mode, led_cfg->max_current);
	__pm8xxx_led_work(&info->led[PM8XXX_LED_PAT8_RED],
			led_cfg->max_current);
	if (led_cfg->mode != PM8XXX_LED_MODE_MANUAL)
		pm8xxx_led_pwm_configure(&info->led[PM8XXX_LED_PAT8_RED],
		delayoff, delayon);

	if ((brightness_r || brightness_g || brightness_b) &&
	(info->pdata->led_power_on))
		info->pdata->led_power_on(1);
	printk(KERN_DEBUG "[LED] USER : R:%d,G:%d,B:%d\n",
		brightness_r, brightness_g, brightness_b);
	pm8xxx_led_set(&info->led[PM8XXX_LED_PAT8_RED].cdev,
		led_cfg->max_current);
	pm8xxx_led_set(&info->led[PM8XXX_LED_PAT8_GREEN].cdev,
		led_cfg->max_current);
	pm8xxx_led_set(&info->led[PM8XXX_LED_PAT8_BLUE].cdev,
		led_cfg->max_current);

	mutex_unlock(&info->led_work_lock);

	return size;

}
int disassemble (char * program) {
	
	char * 	token = strtok(program, "\t\n");
	
	int memaddr;
	char * instructions;
	
	while (token != NULL) {
		
		//printf("%s\n", token);
		
		if(strcmp(token, ".text") == 0) {
			token = strtok(NULL, "\t\n");
			memaddr = hex_to_dec(token);
			//printf("%d is 0x%x\n", memaddr, memaddr);
			token = strtok(NULL, "\t\n");
			instructions = token;
			token = NULL;
		}
		else
			token = strtok(NULL, "\t\n");
	}
	
	//printf("Mem Address: %s\n", memaddr);
	//printf("Instruction String: %s\n", instructions);
	
	int size = strlen(instructions) / 2;
	
	//printf("Length of instruction string in bytes: %d\n", size);
	
	unsigned char * instruct = malloc(sizeof(unsigned char) * (size + 1));
	int i = 0;
	
	for (int j = 0; j < strlen(instructions); j+=2) {
				
				char * byte = malloc(sizeof(char) * 3);
				strncpy(byte, instructions + j, 2);
				byte[2] = '\0';
				
				//printf("Byte: %s\n", byte);
				
				unsigned char c = (unsigned char) hex_to_dec(byte);
				
				instruct[i] = c;
				//printf("This is in memory location %d: %x\n", i, instruct[i]);
				i++;
				
				
			}
	
		int reg_one;
		int reg_two;
		int value;
		char * register1;
		char * register2;
	
		for(int i = 0; i < size; i++, memaddr++) {
			
			printf("0x%x: ", memaddr);
			
			switch(instruct[i]) {
				
				case 0x00:
							printf("NOP\n");
							break;
				case 0x10:
							printf("HALT\n");
							break;
				case 0x20:
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							i++;
							memaddr++;
							
							printf("RRMOVL %s, %s\n", register1, register2);
							break;
				case 0x30:
				
							reg_two = (instruct[i+1]& 0x0f);
							
							register2 = findReg(reg_two);
							
							value = (instruct[i+5] << 24) +
								(instruct[i+4] << 16) +
								(instruct[i+3] << 8) +
								(instruct[i+2]);
							
							printf("IRMOVL $%d, %s\n", value, register2);
							i+=5;
							memaddr+=5;
							break;
				
				case 0x40: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							value = (instruct[i+5] << 24) +
								(instruct[i+4] << 16) +
								(instruct[i+3] << 8) +
								(instruct[i+2]);
							
							printf("RMMOVL %s, %d(%s)\n", register1, value, register2);
							i+=5;
							memaddr+=5;
							break;
				
				case 0x50:
							
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							value = (instruct[i+5] << 24) +
								(instruct[i+4] << 16) +
								(instruct[i+3] << 8) +
								(instruct[i+2]);
							
							printf("MRMOVL %d(%s), %s\n", value, register2, register1);
							i+=5;
							memaddr+=5;
							break;
				
				case 0x60: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("ADDL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;
							
				case 0x61: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("SUBL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;
							
				case 0x62: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("ANDL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;

				case 0x63: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("XORL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;
							
				case 0x64: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("MULL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;
							
				case 0x65: 
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							printf("CMPL %s, %s\n", register1, register2);
							i++;
							memaddr++;
							break;
							
				case 0x70:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JMP 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x71:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JLE 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x72:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JL 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x73:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JE 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x74:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JNE 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x75:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JGE 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x76:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("JG 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x80:
				
							value = 	(instruct[i+4] << 24) +
										(instruct[i+3] << 16) +
										(instruct[i+2] << 8) +
										(instruct[i+1]);
										
							printf("CALL 0x%x\n", value);
							i+=4;
							memaddr+=4;
							break;
							
				case 0x90:
				
						printf ("RET\n");
						break;
				
				case 0xa0:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							printf("PUSHL %s\n", register1);
							i++;
							memaddr++;
							break;
							
				case 0xb0:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							printf("POPL %s\n", register1);
							i++;
							memaddr++;
							break;
							
				case 0xc0:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							value = 	(instruct[i+5] << 24) +
										(instruct[i+4] << 16) +
										(instruct[i+3] << 8) +
										(instruct[i+2]); 
							
							printf("READB %d(%s)\n", value, register1);
							i+=5;
							memaddr+=5;
							break;
							
				case 0xc1:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							value = 	(instruct[i+5] << 24) +
										(instruct[i+4] << 16) +
										(instruct[i+3] << 8) +
										(instruct[i+2]); 
							
							printf("READL %d(%s)\n", value, register1);
							i+=5;
							memaddr+=5;
							break;
							
				case 0xd0:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							value = 	(instruct[i+5] << 24) +
										(instruct[i+4] << 16) +
										(instruct[i+3] << 8) +
										(instruct[i+2]); 
							
							printf("WRITEB %d(%s)\n", value, register1);
							i+=5;
							memaddr+=5;
							break;
							
				case 0xd1:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							
							register1 = findReg(reg_one);
							
							value = 	(instruct[i+5] << 24) +
										(instruct[i+4] << 16) +
										(instruct[i+3] << 8) +
										(instruct[i+2]); 
							
							printf("WRITEL %d(%s)\n", value, register1);
							i+=5;
							memaddr+=5;
							break;
							
				case 0xe0:
				
							reg_one = (instruct[i+1] & 0xf0) >> 4;
							reg_two = (instruct[i+1]& 0x0f);
							
							register1 = findReg(reg_one);
							register2 = findReg(reg_two);
							
							value = 	(instruct[i+5] << 24) +
										(instruct[i+4] << 16) +
										(instruct[i+3] << 8) +
										(instruct[i+2]); 
							
							printf("MOVSBL %d(%s), %s\n", value, register2, register1);
							i+=5;
							memaddr+=5;
							break;
				
				
				
				default:
						break;
							
				
			}
			
		}
		
		
	
	return 0;
	
}