Esempio n. 1
0
static void GetIndividualFile(char* dest, char* path, char* file)
{
    strcpy(dest, path);
    GetPreviousDir(dest);
    addsep(dest);
    strcat(dest, file);
}
Esempio n. 2
0
void silent_load(NODE *arg, char *prefix) {
    FILE *tmp_stream;
    NODE *tmp_line, *exec_list;
    char load_path[200];
    NODE *st = valnode__caseobj(Startup);

    /* This procedure is called three ways:
     *    silent_load(NIL,*argv)	loads *argv
     *    silent_load(proc,logolib)     loads logolib/proc
     *    silent_load(proc,NULL)	loads proc.lg
     * The "/" or ".lg" is supplied by this procedure as needed.
     */

    /*     [This is no longer true!  But for Windows we change FOO? to FOOQ.]
     * In the case that this procedure is called to load a procedure from the
     * logo library, it must first truncate the name of the procedure to
     * eight characters, to find the filename (so as to be compatible with
     * MS-DOS)
     */

    if (prefix == NULL && arg == NIL) return;
    strcpy(load_path, (prefix == NULL ? "" :
    			  (arg == NIL ? prefix : addsep(prefix))));
    if (arg != NIL) {
	arg = cnv_node_to_strnode(arg);
	if (arg == UNBOUND) return;
	if (!strncmp(getstrptr(arg), ".", getstrlen(arg))) return;
	if (!strncmp(getstrptr(arg), "..", 2)) return;
	if (getstrlen(arg) > 150) return;
	noparitylow_strnzcpy(load_path + (int)strlen(load_path),
			     getstrptr(arg), getstrlen(arg));
	if (prefix == NULL)
	  strcat(load_path, ".lg");
/* #ifdef WIN32 */
	else if (arg != NIL) {
	    char *cp;
	    for (cp = load_path; *cp != '\0'; cp++)
		if (*cp == '?') *cp = 'Q';
	}
	/*  strcpy(load_path, eight_dot_three(load_path));  */
/* #endif */
    }
    tmp_stream = loadstream;
    tmp_line = current_line;
    loadstream = fopen(load_path, "r");
    if (loadstream != NULL) {
	while (!(feof(loadstream)) && NOT_THROWING) {
	    current_line = reader(loadstream, "");
	    exec_list =parser(current_line, TRUE);
	    if (exec_list != NIL) eval_driver(exec_list);
	}
	fclose(loadstream);
	runstartup(st);
    } else if (arg == NIL || prefix == csls)
	err_logo(CANT_OPEN_ERROR,
		 make_strnode(load_path, NULL, strlen(load_path), STRING,
			      strnzcpy));
    loadstream = tmp_stream;
    current_line = tmp_line;
}
Esempio n. 3
0
Toolbar::Toolbar(QWidget *parent, const char *name) : QFrame(parent, name)
{
    layout = new QHBoxLayout(this);
    layout->setSpacing(1);

    setFrameStyle(QFrame::Panel|QFrame::Raised);
    setLineWidth(1);

    setGeometry(0, (defaults::toolbar_top)?(0):(QApplication::desktop()->height()-defaults::tb_height),
                QApplication::desktop()->width(), defaults::tb_height);
    layout->addSpacing(4);

    // pager
    tb_pg = new pager(this, "pager");
    layout->add(tb_pg);
    layout->addSpacing(3);

    // winlist
    if(defaults::show_winlist)
    {
        tb_wl = new winlist(this, "winlist");
        layout->add(tb_wl);
    }
    else
        tb_wl = new winlist(0, "winlist");

    // menu
    if(defaults::show_menu)
    {
        tb_mn = new menu(this, "menu");
        layout->add(tb_mn);
    }
    else
        tb_mn = new menu(0, "menu");

    tb_mn->readmenu();

    if(defaults::show_menu || defaults::show_winlist)
        addsep();

    // procbar
    tb_pb = new procbar(this, "procbar");
    tb_pb->setFixedHeight(defaults::tc_height);
    layout->add(tb_pb);

    tb_ap = new apbar(this, "apbar");
    layout->add(tb_ap);

    layout->addSpacing(4);
    show();
}
Esempio n. 4
0
static void AddAllWildCard(char* path)
{
    addsep(path);
    strcat(path, "*.*");
}
Esempio n. 5
0
int RenameTree(const char* src_filename, const char* dest_filename)
{    
    int found, attrib;
    char temppath[MAXPATH];
    char temppath1[MAXPATH];
    char origpath[MAXPATH];
    char tgtpath[MAXPATH];
    char tgtpath1[MAXPATH];
    
    struct ffblk info;

    char srcdrive[MAXDRIVE], srcdir[MAXDIR], srcfname[MAXFILE], srcext[MAXEXT];
    char dstdrive[MAXDRIVE], dstdir[MAXDIR], dstfname[MAXFILE], dstext[MAXEXT];
 
    /* If the target directory exists, delete it */
    if (dir_exists(dest_filename))
    {    
       if (!DelTree(dest_filename))
	  return 0;
    }
        
    /* First see wether we are not renaming a directory in the same path */
    
    SplitPath(src_filename, srcdrive, srcdir, srcfname, srcext);
    SplitPath(dest_filename, dstdrive, dstdir, dstfname, dstext);
    
    if ((strcmpi(srcdir, dstdir) == 0) &&
	(!dir_exists(dest_filename)))
    {
	return rename(src_filename, dest_filename) == 0;
    }
    
    /* Deep renaming a directory */
    strcpy(temppath, src_filename);
    strcpy(origpath, src_filename);
    GetPreviousDir(origpath);

    strcpy(tgtpath, dest_filename);
    if (mkdir(tgtpath) == -1)
	return 0;   

    /* Two state machine: */
    
    /* As long as the complete tree is not deleted */
    AddAllWildCard(origpath);
    AddAllWildCard(temppath);
    while (strcmp(temppath, origpath) != 0)
    {
          /* 1) as long as there are still sub directories, enter the
                first one */
	  found = findfirst(temppath, &info, FA_DIREC) == 0;
	  while (found &&
		 (info.ff_name[0] == '.' ||
		  (info.ff_attrib & FA_DIREC) == 0))
	  {
	     found = findnext(&info) == 0;
	  }

	  if (found)
	  {
	     GetIndividualFile(temppath1, temppath, info.ff_name);
	     strcpy(temppath, temppath1);
             AddAllWildCard(temppath);
	      
	     /* Make sure the target directory exists */	      
	     addsep(tgtpath); 
	     strcat(tgtpath, info.ff_name);
	      
	     if (mkdir(tgtpath) == -1)
		 return 0;
	  }

          /* 2) if there are no more sub directories in this directory, rename
                all the files and leave this directory, and delete this directory */
	  else
          {
	      found = findfirst(temppath, &info, FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_ARCH) == 0;
	      while (found)
	      {
		  GetIndividualFile(temppath1, temppath, info.ff_name);
      
		  strcpy(tgtpath1, tgtpath);
		  addsep(tgtpath1);
		  strcat(tgtpath1, info.ff_name);

		  unlink(tgtpath1);

		  if (rename(temppath1, tgtpath1) == -1)
		      return 0;

		  found = findnext(&info) == 0;
	      }
	
	      GetPreviousDir(temppath);	/* Strip *.* */

              /* DRR: FreeDOS cannot set attributes of directory without
               * clearing directory bit (but the directory will not be 
               * changed to a normal file)
               */
              if ((attrib = _chmod(temppath, 0)) == -1)
                 return 0;
              attrib &= ~FA_RDONLY;
              if (_chmod(temppath, 1, attrib & ~FA_DIREC) == -1)
	         return 0;

	      if (rmdir(temppath) == -1)
	         return 0;
	    
	      
	      GetPreviousDir(temppath);       /* Leave directory */
              AddAllWildCard(temppath);
	      
	      GetPreviousDir(tgtpath);        /* Leave target directory */
	}
    }
    
    return 1;    
}
Esempio n. 6
0
Toolbar::Toolbar(QWidget *parent) : QFrame(parent)
{
  layout = new QHBoxLayout(0);
  layout->setSpacing(1);

  setFrameStyle(QFrame::Panel|QFrame::Raised);
  setLineWidth(1);

  setGeometry(0, (defaults::toolbar_top)?(0):(QApplication::desktop()->height()-defaults::tb_height),
  QApplication::desktop()->width(), defaults::tb_height);

  layout->addSpacing(4);

  // pager
  tb_pg = new pager(this);
  layout->addWidget(tb_pg);
  layout->addSpacing(3);

  // winlist
  if(defaults::show_winlist)
  {
    tb_wl = new winlist(this);
    layout->addWidget(tb_wl);
  }
  else
    tb_wl = new winlist(0);

  // menu
  if(defaults::show_menu)
  {
    tb_mn = new menu(this);
    layout->addWidget(tb_mn);
  }
  else
    tb_mn = new menu(0);

  tb_mn->readmenu();

  if(defaults::show_menu || defaults::show_winlist)
    addsep();

  // procbar
  tb_pb = new procbar(this);
  tb_pb->setFixedHeight(defaults::tc_height);
  layout->addWidget(tb_pb);

  // app bar
  tb_ap = new apbar(this);
  layout->addWidget(tb_ap);

  // spacer
  QWidget *Spacer = new QWidget(this);
  Spacer->setSizePolicy(QSizePolicy::Expanding, Spacer->sizePolicy().verticalPolicy());
  layout->addWidget(Spacer);

  // clock
  tb_cl = new Clock(this);
  layout->addWidget(tb_cl);

  layout->addSpacing(2);
  layout->setMargin(1);
  setLayout(layout);
  show();
}
Esempio n. 7
0
char *create_tidy_str(const char *fin_path, char **pbuf, int* plen)
{
    FILE *fp_in, *fp_out;
    fp_in = fopen(fin_path,"rb");

    if(fp_in == NULL)
    {
        return;
    }

    fseek(fp_in, 0L, SEEK_END);
    int size = ftell(fp_in);
    fseek(fp_in, 0L, SEEK_SET);

    char *buf,*buf2;
    buf = (char*)malloc(size+1);
    buf2 = (char*)malloc(size+1);

    int len = fread(buf,1,size,fp_in);
    buf[len] = '\0';
    bzero(buf2,size+1);

    char *p = buf;
    char *p2 = buf2;
    char *start = buf;
    int n;
    // 汉字或汉字之后EN_LENGHT个英文之内保留
    do
    {
        // TODO is_chinese -> !is_ascii
        if(is_chinese(p))
        {
            write_chinese(&p, &p2);
            start = p;
        }
        else
        {
            //printf("end:0x%x,p:0x%x\n",buf+len,p);
            // 非英文不保留,英文则保留有限位数
            // TODO 判断英文不正确 会有一个英文多出来
            if(!is_english(p))
            {
                start = buf;
                p = forward_a_char(p);
            }
            else if(get_word_n(start, p - start) <= EN_LENGHT)
            {
                n = get_word_n(p, 1);
                memcpy(p2, p, n);
                p += n;
                p2 += n;
            }
            else if(get_word_n(start, p - start) == EN_LENGHT + 1)
            {
                addsep(&p2);
                p = forward_a_char(p);
            }
            else
            {
                p = forward_a_char(p);
            }
        }
    }while(*p != '\0');

    free(buf);
    fclose(fp_in);

    *pbuf = buf2;
    *plen = strlen(buf2);
    return *pbuf;
}