Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
Merge.txt79 linesDownload Raw Back to Utils
1 2#help_index "Cmd Line (Typically)"3 4CDirEntry MGFind(CDirEntry *needle_entry,CDirEntry *haystack_lst)5{6  while (haystack_lst) {7    if (!StrCmp(needle_entry->name,haystack_lst->name))8      return haystack_lst;9    haystack_lst=haystack_lst->next;10  }11  return NULL;12}13 14U0 Merge2(CDirEntry *tmpde1,CDirEntry *tmpde2,I64 *_fuf_flags,I64 *_df_flags)15{16  CDirEntry *tmpde;17  while (tmpde1 && !(*_df_flags & DF_ABORT_ALL_FILES)) {18    tmpde=MGFind(tmpde1,tmpde2);19    if (!tmpde)20      "$BROWN$Does Not Exist:%s$FG$\n",tmpde1->full_name;21    else {22      if (tmpde1->attr & RS_ATTR_DIR)23        Merge2(tmpde1->sub,tmpde->sub,_fuf_flags,_df_flags);24      else {25        if (AbsI64(tmpde1->datetime-tmpde->datetime)>CDATE_FREQ*2) {//slop26          "%s",tmpde1->full_name;27          '\n';28          if (Bt(_fuf_flags,FUf_DIFF)) {29            if (FilesFindMatch(tmpde1->full_name,FILEMASK_TXT))30              Diff(tmpde->full_name,tmpde1->full_name,_df_flags);31          }32        }33      }34    }35    tmpde1=tmpde1->next;36  }37}38public U0 Merge(U8 *dst_files_find_mask="/*",U8 *src_files_find_mask="/*",39  U8 *fu_flags=NULL)40{/*Merge text files from one list into another.41Report files whos date/time is different.42 43"+d" will do Diff() on files and prompt to44merge changes from source files into45destination files.46*/47  I64 df_flags=0,fuf_flags=0;48  CDirEntry *tmpde1=NULL,*tmpde2=NULL;49  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r");50  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);51  if (fuf_flags&~(FUG_FILES_FIND|FUF_DIFF))52    throw('FUF');53  PrintWarn("This is based strictly on file dates.\n");54  tmpde1=FilesFind(src_files_find_mask,fuf_flags&FUG_FILES_FIND);55  tmpde2=FilesFind(dst_files_find_mask,fuf_flags&FUG_FILES_FIND);56  fuf_flags&=FUF_DIFF;57  Merge2(tmpde1,tmpde2,&fuf_flags,&df_flags);58  DirTreeDel(tmpde1);59  DirTreeDel(tmpde2);60}61 62#help_index "Utils;Cmd Line (Typically)"63 64public U0 NewFiles(U8 *files_find_mask="/*",CDate cdt=0,U8 *fu_flags=NULL)65{//Report files newer than a certain date.66  I64 fuf_flags=0;67  CDirEntry *tmpde,*tmpde1;68  if (!cdt) cdt=sys_compile_time;69  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+F");70  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);71  tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags);72  while (tmpde) {73    if (tmpde->datetime>cdt)74      "%s\n",tmpde->full_name;75    tmpde=tmpde->next;76  }77  DirTreeDel(tmpde1);78}79