예제 #1
0
파일: hex.c 프로젝트: S010/misc
static void
hex(const char *s)
{
	unsigned long long i = 0;

	switch (s[0]) {
	case 'b':
	case 'B':
		i = read_bin(s + 1);
		break;
	case 'x':
	case 'X':
		i = read_hex(s + 1);
		break;
	case '0':
		if (s[1] == '\0')
			i = read_dec(s);
		else if (s[1] == 'x' || s[1] == 'X')
			i = read_hex(s + 2);
		else
			i = read_oct(s + 1);
		break;
	default:
		if (isdigit(*s))
			i = read_dec(s);
		else
			usage();
		break;
	}
	print_bin(i);
	print_chr(i);
	print_dec(i);
	print_hex(i);
	print_oct(i);
}
예제 #2
0
int print_number(int fd, va_list ap, char c)
{
	int written = 0;

	switch (c) {
		case 's':
		written = print_str(fd, va_arg(ap, char *));
		break;

		case 'd':
		written = print_dec(fd, va_arg(ap, uint64_t));
		break;

		case 'o':
		written = print_oct(fd, va_arg(ap, uint64_t));
		break;

		case 'x':
		written = print_hex(fd, va_arg(ap, uint64_t));
		break;

		case 'c':
		written = print_chr(fd, va_arg(ap, uint64_t));
		break;

		default:
		fputc(fd, c);
		written++;
	}
	return written;
}
예제 #3
0
파일: builtin_echo.c 프로젝트: seblu/42sh
static int	builtin_echo_ext(const char *msg)
{
  int		backed = 0;

  for (; *msg; ++msg)
    if (*msg == '\\' && !backed && (backed = 1))
      continue;
    else if (backed && *msg == 'a' && !(backed = 0))
      putchar('\a');
    else if (backed && *msg == 'b' && !(backed = 0))
      putchar('\b');
    else if (backed && *msg == 'c')
      return 0;
    else if (backed && *msg == 'e' && !(backed = 0))
      putchar(0x1b);
    else if (backed && *msg == 'f' && !(backed = 0))
      putchar('\f');
    else if (backed && *msg == 'n' && !(backed = 0))
      putchar('\n');
    else if (backed && *msg == 'r' && !(backed = 0))
      putchar('\r');
    else if (backed && *msg == 't' && !(backed = 0))
      putchar('\t');
    else if (backed && *msg == '\\' && !(backed = 0))
      putchar('\\');
    else if (backed && *msg == 'v' && !(backed = 0))
      putchar('\v');
    else if (backed && fisdigit(*msg) && !(backed = 0))
      print_oct(&msg);
    else if (backed && *msg == 'x' && !(backed = 0) && (++msg))
      print_hex(&msg);
    else if (backed && !(backed = 0))
      printf("\\%c", *msg);
    else
      putchar(*msg);
  return 1;
}