Ejemplo n.º 1
0
t_file		*new_file(t_args *a, char *path, char *name)
{
	t_file	*file;
	char	*tmp;
	//acl_t	ac;
	int		i;

	tmp = set_filename(path, name, 0);
	i = 0;
	if ((file = (t_file*)malloc(sizeof(t_file))))
	{
		file->next = NULL;
		lstat(tmp, &file->s);
		init_print(name, &file->s, a->mask, &file->p);
		/*if ((ac = acl_get_file(tmp, ACL_TYPE_EXTENDED)))
		{
			file->p.acl = 1;
			acl_free((void *)ac);
		}*/
		if ((file->s.st_mode & S_IFMT) == S_IFLNK &&
			(i = readlink(tmp, file->p.lnk, sizeof(char) * 1024)))
			file->p.lnk[i] = 0;
		//file->p.attr = listxattr(tmp, NULL, 0, i ?
		//	XATTR_SHOWCOMPRESSION | XATTR_NOFOLLOW : 0);
	}
	free(tmp);
	return (file);
}
Ejemplo n.º 2
0
/* 主机端的主程序简单示例 */
main() {
	unsigned char xdata data_to_send[200];  /* 缓冲区 */
	unsigned char str_to_print[]="OK, support text print\n";
	unsigned char s;
	mDelaymS( 200 );
	set_usb_mode( 6 );  /* 设置USB主机模式 */
	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待USB打印机连接上来 */

/* 如果设备端是CH341转打印口或者是CH37X,那么以下步骤是可选的,如果是其它USB芯片,那么可能需要执行以下步骤 */
#define USB_RESET_FIRST	1  /* USB规范中未要求在USB设备插入后必须复位该设备,但是计算机的WINDOWS总是这样做,所以有些USB设备也要求在插入后必须先复位才能工作 */
#ifdef USB_RESET_FIRST
	set_usb_mode( 7 );  /* 复位USB设备,CH375向USB信号线的D+和D-输出低电平 */
/* 如果单片机对CH375的INT#引脚采用中断方式而不是查询方式,那么应该在复制USB设备期间禁止CH375中断,在USB设备复位完成后清除CH375中断标志再允许中断 */
	mDelaymS( 10 );  /* 复位时间不少于1mS,建议为10mS */
	set_usb_mode( 6 );  /* 结束复位 */
	mDelaymS( 100 );
	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待复位之后的设备端再次连接上来 */
#endif

	mDelaymS( 200 );  /* 有些USB设备要等待数百毫秒才能正常工作 */
	if ( init_print()!=USB_INT_SUCCESS ) while(1);  /* 错误 */
	while ( 1 ) {
		s = get_port_status( );
		if ( s!=0xFF ) {
/*			if ( s&0x20 ) printf("No paper!\n");
			if ( (s&0x08) == 0 ) printf("Print ERROR!\n");*/
		}
		send_data( strlen(str_to_print), str_to_print );  /* 输出数据给打印机,与通过并口方式输出一样 */
		send_data( sizeof(data_to_send), data_to_send );  /* 输出的数据必须按照打印机的格式要求或者遵循打印描述语言 */
		/* 可以再次继续发送数据或者接收数据 */
	}
}
Ejemplo n.º 3
0
int								ft_vlprintf(const char *format, va_list ap)
{
	t_printf_special_function	print_format[NB_SPECIAL_FUNCTION];
	t_printf_set_function		set_mode[NB_MODE_FUNCTION];
	t_printf_mode				mode;
	int							length;
	long int					tlength;

	init_print(print_format);
	init_set(set_mode);
	tlength = 0;
	while (*format)
	{
		length = print_no_format(format);
		tlength += length;
		if (!*(format += length))
			break ;
		ft_bzero((void *)&mode, sizeof(t_printf_mode));
		mode.precision = -1;
		if (*(format += set_format_mode(format, &mode, set_mode, ap)))
			format++;
		tlength += print_format[get_special_index(SPECIAL_CSET, \
				mode.special)](mode, ap);
	}
	return (tlength);
}
Ejemplo n.º 4
0
int main ( void )
{
  init_print (); 
  int0_init ();
  
  initializeScheduler ();
  
  createTask ( &function_1, "fun_one", 1, 200 );
  
  createTask ( &function_2, "fun_two", 2, 200 );
  
  createTask ( &function_3, "fun_three", 3, 200 );
  
  createTask ( &function_4, "fun_four", 4, 50 );

  startScheduler ();
  
  return 0;
}