static void GetIndividualFile(char* dest, char* path, char* file) { strcpy(dest, path); GetPreviousDir(dest); addsep(dest); strcat(dest, file); }
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; }
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(); }
static void AddAllWildCard(char* path) { addsep(path); strcat(path, "*.*"); }
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; }
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(); }
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; }