int SetApplication(const char * app, const char * filename) { gchar * p=GetExt(app); if(!p) return 1; if(strcmp(p,"desktop")) return 1; char * ext=GetExt(filename); if(!ext) return 1; // ClassString setfile = g_strdup_printf("%s/.config/billfm/mime2command.txt",g_get_home_dir()); ClassString setfile=g_build_filename(config_path,"mime2command.txt",NULL); FILE * f = fopen (setfile.s,"a+"); if(!f) { printf("Not open %s\n",setfile.s); return 1; } ClassString str=g_strdup_printf("%s %s\n",ext,app); fwrite(str.s,strlen(str.s),1,f); fclose(f); InsertCommand(ext,g_strdup(app)); return 0; }
void CommandData::ProcessCommand() { #ifndef SFX_MODULE const wchar *SingleCharCommands=L"FUADPXETK"; if (Command[0]!=0 && Command[1]!=0 && wcschr(SingleCharCommands,Command[0])!=NULL || *ArcName==0) OutHelp(*Command==0 ? RARX_SUCCESS:RARX_USERERROR); // Return 'success' for 'rar' without parameters. #ifdef _UNIX if (GetExt(ArcName)==NULL && (!FileExist(ArcName) || IsDir(GetFileAttr(ArcName)))) wcsncatz(ArcName,L".rar",ASIZE(ArcName)); #else if (GetExt(ArcName)==NULL) wcsncatz(ArcName,L".rar",ASIZE(ArcName)); #endif if (wcschr(L"AFUMD",*Command)==NULL) { if (GenerateArcName) GenerateArchiveName(ArcName,ASIZE(ArcName),GenerateMask,false); StringList ArcMasks; ArcMasks.AddString(ArcName); ScanTree Scan(&ArcMasks,Recurse,SaveSymLinks,SCAN_SKIPDIRS); FindData FindData; while (Scan.GetNext(&FindData)==SCAN_SUCCESS) AddArcName(FindData.Name); } else AddArcName(ArcName); #endif switch(Command[0]) { case 'P': case 'X': case 'E': case 'T': case 'I': { CmdExtract Extract(this); Extract.DoExtract(); } break; #ifndef SILENT case 'V': case 'L': ListArchive(this); break; default: OutHelp(RARX_USERERROR); #endif } if (!BareOutput) mprintf(L"\n"); }
void CommandData::ProcessCommand() { #ifndef SFX_MODULE if (Command[1] && strchr("FUADPXETK",*Command)!=NULL || *ArcName==0) OutHelp(); #ifdef _UNIX if (GetExt(ArcName)==NULL && (!FileExist(ArcName) || IsDir(GetFileAttr(ArcName)))) strcat(ArcName,".rar"); #else if (GetExt(ArcName)==NULL) strcat(ArcName,".rar"); #endif if (strchr("AFUMD",*Command)==NULL) { StringList ArcMasks; ArcMasks.AddString(ArcName); ScanTree Scan(&ArcMasks,Recurse,SaveLinks,SCAN_SKIPDIRS); FindData FindData; while (Scan.GetNext(&FindData)==SCAN_SUCCESS) AddArcName(FindData.Name,FindData.NameW); } else AddArcName(ArcName,NULL); #endif switch(Command[0]) { case 'P': case 'X': case 'E': case 'T': case 'I': { CmdExtract Extract; Extract.DoExtract(this); } break; #if !defined(GUI) && !defined(SILENT) case 'V': case 'L': ListArchive(this); break; default: OutHelp(); #endif } #ifndef GUI if (!BareOutput) mprintf("\n"); #endif }
char *ReadFileBuf(char *name, int *size) { FILE *fp; char *buf, *ext; int txt = 1; int n; ext = GetExt(name); if (!StrCmp(ext, ".txt")) { txt = 1; } else { txt = 0; } fp = FOpen(name, "rb"); if (fp == NULL) { return NULL; } fseek(fp, 0, SEEK_END); n = ftell(fp); fseek(fp, 0, SEEK_SET); buf = (char *)Malloc(sizeof(char) * n); fread(buf, sizeof(char), n, fp); if (txt) { buf[n - 1] = '\0'; } FClose(fp); *size = n; return buf; }
bool GetAutoRenamedName(wchar *Name,size_t MaxNameSize) { wchar NewName[NM]; size_t NameLength=wcslen(Name); #ifdef _ANDROID if (NameLength>ASIZE(NewName)-10) return false; #endif wchar *Ext=GetExt(Name); if (Ext==NULL) Ext=Name+NameLength; for (uint FileVer=1;;FileVer++) { #ifdef _ANDROID // No swprintf in Android NDK r9. uint NamePrefixLength=Ext-Name; wcsncpy(NewName,Name,NamePrefixLength); wcscpy(NewName+NamePrefixLength,L"("); itoa(FileVer,NewName+NamePrefixLength+1,ASIZE(NewName)-NamePrefixLength-1); wcsncatz(NewName,L")",ASIZE(NewName)); wcsncatz(NewName,Ext,ASIZE(NewName)); #else swprintf(NewName,ASIZE(NewName),L"%.*ls(%u)%ls",uint(Ext-Name),Name,FileVer,Ext); #endif if (!FileExist(NewName)) { wcsncpyz(Name,NewName,MaxNameSize); break; } if (FileVer>=1000000) return false; } return true; }
static int CheckExt(char *filename) { int i; char *ext = GetExt(filename); for (i = 0; nez_extlist[i]; i++) if (!xstricmp(ext, nez_extlist[i])) return 1; return 0; }
static int GetMimeForFile(const char * name, struct stat * file_stat) { if(S_ISDIR(file_stat->st_mode)) return 1; if(S_ISFIFO(file_stat->st_mode)) return 0; ClassString p=GetExt(name); if(p.s) { if(!strcmp(p.s,"desktop")) { ClassString s=GetIconDesktopName(name); if(!s.s) { return 0; } return InsertIconName(s.s); } InfoMime * info= find_mime(p.s); if(info) { if(info->icon_index) return info->icon_index; } } return IsExecute(name,file_stat,0); }
void NextVolumeName(char *ArcName,bool OldNumbering) { char *ChPtr; if ((ChPtr=GetExt(ArcName))==NULL) { strcat(ArcName,".rar"); ChPtr=GetExt(ArcName); } else if (ChPtr[1]==0 || stricomp(ChPtr+1,"exe")==0 || stricomp(ChPtr+1,"sfx")==0) strcpy(ChPtr+1,"rar"); if (!OldNumbering) { ChPtr=GetVolNumPart(ArcName); while ((++(*ChPtr))=='9'+1) { *ChPtr='0'; ChPtr--; if (ChPtr<ArcName || !isdigit(*ChPtr)) { for (char *EndPtr=ArcName+strlen(ArcName);EndPtr!=ChPtr;EndPtr--) *(EndPtr+1)=*EndPtr; *(ChPtr+1)='1'; break; } } } else if (!isdigit(*(ChPtr+2)) || !isdigit(*(ChPtr+3))) strcpy(ChPtr+2,"00"); else { ChPtr+=3; while ((++(*ChPtr))=='9'+1) if (*(ChPtr-1)=='.') { *ChPtr='A'; break; } else { *ChPtr='0'; ChPtr--; } } }
void NextVolumeName(wchar *ArcName,uint MaxLength,bool OldNumbering) { wchar *ChPtr; if ((ChPtr=GetExt(ArcName))==NULL) { wcsncatz(ArcName,L".rar",MaxLength); ChPtr=GetExt(ArcName); } else if (ChPtr[1]==0 && wcslen(ArcName)<MaxLength-3 || wcsicomp(ChPtr+1,L"exe")==0 || wcsicomp(ChPtr+1,L"sfx")==0) wcscpy(ChPtr+1,L"rar"); if (!OldNumbering) { ChPtr=GetVolNumPart(ArcName); while ((++(*ChPtr))=='9'+1) { *ChPtr='0'; ChPtr--; if (ChPtr<ArcName || !IsDigit(*ChPtr)) { for (wchar *EndPtr=ArcName+wcslen(ArcName);EndPtr!=ChPtr;EndPtr--) *(EndPtr+1)=*EndPtr; *(ChPtr+1)='1'; break; } } } else if (!IsDigit(*(ChPtr+2)) || !IsDigit(*(ChPtr+3))) wcscpy(ChPtr+2,L"00"); else { ChPtr+=3; while ((++(*ChPtr))=='9'+1) if (*(ChPtr-1)=='.') { *ChPtr='A'; break; } else { *ChPtr='0'; ChPtr--; } } }
void OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, const std::string &extname, bool displayable) { if ((displayable) && (extname == "IDENT")) { std::string* ident; if (GetExt("IDENT", ident)) proto->ProtoSendMetaData(opaque, TYPE_USER, user, extname, *ident); } }
bool GetAutoRenamedName(char *Name,wchar *NameW) { char NewName[NM]; wchar NewNameW[NM]; if ((Name!=NULL && strlen(Name)>ASIZE(NewName)-10) || (NameW!=NULL && wcslen(NameW)>ASIZE(NewNameW)-10)) return(false); char *Ext=NULL; if (Name!=NULL && *Name!=0) { Ext=GetExt(Name); if (Ext==NULL) Ext=Name+strlen(Name); } wchar *ExtW=NULL; if (NameW!=NULL && *NameW!=0) { ExtW=GetExt(NameW); if (ExtW==NULL) ExtW=NameW+wcslen(NameW); } *NewName=0; *NewNameW=0; for (int FileVer=1;;FileVer++) { if (Name!=NULL && *Name!=0) sprintf(NewName,"%.*s(%d)%s",int(Ext-Name),Name,FileVer,Ext); if (NameW!=NULL && *NameW!=0) sprintfw(NewNameW,ASIZE(NewNameW),L"%.*s(%d)%s",int(ExtW-NameW),NameW,FileVer,ExtW); if (!FileExist(NewName,NewNameW)) { if (Name!=NULL && *Name!=0) strcpy(Name,NewName); if (NameW!=NULL && *NameW!=0) wcscpy(NameW,NewNameW); break; } if (FileVer>=1000000) return(false); } return(true); }
static bool ParseProfilesDir() { if(!dir) return false; char *ext; struct dirent *entry = NULL; int i = 0; while(i < MAX_BROWSER_SIZE) { entry = readdir(dir); if(entry == NULL) break; if(entry->d_name[0] == '.' && entry->d_name[1] != '.') continue; if(strcmp(entry->d_name, "..") == 0) continue; if(entry->d_type==DT_DIR) continue; ext = GetExt(entry->d_name); if(ext == NULL || stricmp(ext, "wtp") != 0) continue; if(!AddBrowserEntry()) { break; } snprintf(browserList[browser.numEntries+i].filename, MAXJOLIET, "%s", entry->d_name); StripExt(browserList[browser.numEntries+i].displayname, browserList[browser.numEntries+i].filename); // hide file extension i++; } // Sort the file list if(i >= 0) qsort(browserList, browser.numEntries+i, sizeof(BROWSERENTRY), FileSortCallback); browser.numEntries += i; if(entry == NULL) { closedir(dir); // close directory dir = NULL; return false; // no more entries } return true; // more entries }
void ConvertWav(const char *pSearch) { WIN32_FIND_DATA fd; char poo[1024]; strcpy(poo, pSearch); strcat(poo, "\\*"); HANDLE find = FindFirstFile(poo, &fd); if(find == INVALID_HANDLE_VALUE) { printf("Something went very wrong :(\n"); return; } BOOL found = true; while(found) { if(strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..")) { if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { strcpy(poo, pSearch); strcat(poo, "\\"); strcat(poo, fd.cFileName); ConvertWav(poo); } else if(!stricmp(GetExt(fd.cFileName),"wav")) { strcpy(poo, "C:\\oggenc -q4 \""); strcat(poo, pSearch); strcat(poo, "\\"); strcat(poo, fd.cFileName); strcat(poo, "\""); system(poo); strcpy(poo, "del \""); strcat(poo, pSearch); strcat(poo, "\\"); strcat(poo, fd.cFileName); strcat(poo, "\""); system(poo); } } found = FindNextFile(find, &fd); } FindClose(find); }
GdkPixbuf * GetIconByName(const char * name, int size) { if(name[0]=='~') { ClassString str=g_strdup_printf("%s%s",g_get_home_dir(),&name[1]); return gdk_pixbuf_new_from_file_at_scale(str.s,size,size,1,0); } if(name[0]=='/') { return gdk_pixbuf_new_from_file_at_scale(name,size,size,1,0); } if(name[0]=='.') { ClassString str=g_strdup_printf("%s%s",app_path,&name[1]); return gdk_pixbuf_new_from_file_at_scale(str.s,size,size,1,0); } GtkIconTheme * icon_theme = gtk_icon_theme_get_default(); GtkIconInfo* inf = gtk_icon_theme_lookup_icon( icon_theme, name, size, GTK_ICON_LOOKUP_USE_BUILTIN ); if(!inf) { ClassString ext=GetExt(name); if(ext.s) { gchar * new_name=g_strdup(name); new_name[strlen(name)-1-strlen(ext.s)]=0; inf = gtk_icon_theme_lookup_icon( icon_theme, new_name, size, GTK_ICON_LOOKUP_USE_BUILTIN ); } } if(inf) { const char * file = gtk_icon_info_get_filename( inf ); if(file) { GdkPixbuf * pixbuf=gdk_pixbuf_new_from_file( file, NULL ); if(pixbuf) { return gdk_pixbuf_scale_simple(pixbuf,size,size,GDK_INTERP_BILINEAR); } } } else { printf("Not found inf %s\n",name); } return 0; }
void CommandData::ProcessCommand() { #ifndef SFX_MODULE const char *SingleCharCommands="FUADPXETK"; if (Command[1] && strchr(SingleCharCommands,*Command)!=NULL || *ArcName==0) OutHelp(); //get filename *ArcName #ifdef _UNIX if (GetExt(ArcName)==NULL && (!FileExist(ArcName) || IsDir(GetFileAttr(ArcName)))) strcat(ArcName,".rar"); #endif //printf("test4 %c %s\n",*Command,ArcName); //找文件,将ArcName传到FindData.Name if (strchr("AFUMD",*Command)==NULL) { StringList ArcMasks; ArcMasks.AddString(ArcName); ScanTree Scan(&ArcMasks,Recurse,SaveLinks,SCAN_SKIPDIRS); FindData FindData; while (Scan.GetNext(&FindData)==SCAN_SUCCESS) AddArcName(FindData.Name,FindData.NameW); //FindData.Name "ere.rar" } #endif switch(Command[0]) { case 'P': case 'X': case 'E': case 'T': case 'I': { printf("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); CmdExtract Extract; Extract.DoExtract(this); printf("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); } break; #ifndef SILENT case 'V': case 'L': ListArchive(this); break; default: OutHelp(); #endif } if (!BareOutput) mprintf("\n"); }
// Get the name of first volume. Return the leftmost digit of volume number. wchar* VolNameToFirstName(const wchar *VolName,wchar *FirstName,size_t MaxSize,bool NewNumbering) { if (FirstName!=VolName) wcsncpyz(FirstName,VolName,MaxSize); wchar *VolNumStart=FirstName; if (NewNumbering) { wchar N='1'; // From the rightmost digit of volume number to the left. for (wchar *ChPtr=GetVolNumPart(FirstName);ChPtr>FirstName;ChPtr--) if (IsDigit(*ChPtr)) { *ChPtr=N; // Set the rightmost digit to '1' and others to '0'. N='0'; } else if (N=='0') { VolNumStart=ChPtr+1; // Store the position of leftmost digit in volume number. break; } } else { // Old volume numbering scheme. Just set the extension to ".rar". SetExt(FirstName,L"rar",MaxSize); VolNumStart=GetExt(FirstName); } if (!FileExist(FirstName)) { // If the first volume, which name we just generated, is not exist, // check if volume with same name and any other extension is available. // It can help in case of *.exe or *.sfx first volume. wchar Mask[NM]; wcsncpyz(Mask,FirstName,ASIZE(Mask)); SetExt(Mask,L"*",ASIZE(Mask)); FindFile Find; Find.SetMask(Mask); FindData FD; while (Find.Next(&FD)) { Archive Arc; if (Arc.Open(FD.Name,0) && Arc.IsArchive(true) && Arc.FirstVolume) { wcsncpyz(FirstName,FD.Name,MaxSize); break; } } } return VolNumStart; }
void JButton::OnMouse( JMouseEvent& m ) { // check if button being pressed if ((m.Action() == aKeyDown || m.Action() == aDblClick) && m.MouseKey() == mkLeft) { if (m_bTwoState) { if (m_bPressed) { Unpress(); } else { Press(); } } else { CaptureMouse( true ); Press(); } SetFocus(); m.Consume(); } // check if being unpressed (for one-state buttons) if (m.Action() == aKeyUp && m.MouseKey() == mkLeft && !m_bTwoState) { CaptureMouse( false ); Unpress(); m.Consume(); } // automatically unpress when leaving button area if (m.Action() == aMouseMove && !GetExt().PtIn( m.MouseX(), m.MouseY() ) && m_bPressed) { CaptureMouse( false ); if (!m_bTwoState) { Unpress(); } } if (IsConsumeEvents()) { m.Consume(); } } // JButton::OnMouse
void SetExt(wchar *Name,const wchar *NewExt,size_t MaxSize) { if (Name==NULL || *Name==0) return; wchar *Dot=GetExt(Name); if (Dot!=NULL) *Dot=0; if (NewExt!=NULL) { wcsncatz(Name,L".",MaxSize); wcsncatz(Name,NewExt,MaxSize); } }
void FbExportDlg::ChangeFormat(FbExportTreeModel * model) { int format = m_format->GetValue(); int scale = format < 0 ? 43 : 100; wxString arc, ext; switch (format) { case -1: arc = wxT("zip"); break; case -2: arc = wxT("gz"); break; case -3: arc = wxT("bz2"); break; } model->SetFormat(GetExt(format), arc, scale); model->SetTransDir(m_transDir->GetValue()); model->SetTransFile(m_transFile->GetValue()); }
void JSlidePiece::DrawBounds() { Frame ext = GetExt(); g_pDrawServer->DrawFrame( ext, 0xFFFFFF00 ); char str[256]; sprintf( str, "%s: {%d, %d}", GetName(), (int)ext.x, (int)ext.y ); Vec2 spos( ext.x + 10, ext.cy() ); g_pDrawServer->DrawString( spos.x, spos.y, -1, str, 0xFFFF4444 ); ext.w = g_pDrawServer->GetFrameW( GetSkinPackID(), GetSkinFrame() ); ext.h = g_pDrawServer->GetFrameH( GetSkinPackID(), GetSkinFrame() ); } // JSlidePiece::DrawBounds
void TestFileNameTools(void) { char whole[]="c:/windows/system32/abc.dll"; char des[256]; GetDir(whole,des); printf("%s\n",des); GetName(whole,des); printf("%s\n",des); GetExt(whole,des); printf("%s\n",des); }
gchar * CheckDesktopFile(const char * name) { if(name[0]=='/') return g_strdup(name); ClassString str=GetExt(name); if(!str.s || strcmp(str.s,"desktop") ) { str=g_strdup_printf("%s.desktop",name); } else str=g_strdup(name); if(name[0]=='~') str=g_strdup_printf("%s%s",g_get_home_dir(),&str.s[1]); else str=g_strdup_printf("/usr/share/applications/%s",str.s); return g_strdup(str.s); }
bool JSlidePiece::PtIn( int px, int py ) const { int spID = GetSkinPackID(); int frID = GetSkinFrame(); Frame ext = GetExt(); if (spID == -1 || frID == -1) { return ext.PtIn( px, py ); } Vec2 pixPos( float( px ) - ext.x, float( py ) - ext.y ); DWORD clr = g_pDrawServer->GetPixel( spID, frID, pixPos ); DWORD alpha = (clr&0xFF000000)>>24; return (alpha > 0x50); } // JSlidePiece::PtIn
GList * GetMimeListCommand(const char *name) { if(!name) return 0; ClassString command; gchar * p=GetExt(name); if(!p) return 0; InfoMime * info= find_mime(p); if(info) { return g_list_first (info->list_command); } g_free(p); return 0; }
void ClickExecFile(const char * name, struct stat * file_stat) { if(IsArchve(name)) { const char * dirname=Panels[ActivePanel]->SetArchiveName(name); ExternalListTar(name,dirname); Panels[ActivePanel]->LoadDir(dirname); return; } ClassString command; gchar * p=GetExt(name); if(p) { if(!strcmp(p,"desktop")) { ClassString command=GetDesktopKey(name,"Exec"); command = g_strdup_printf("%s &",command.s); system(command.s); return; } InfoMime * info= find_mime(p); if(info) { GList *list=g_list_first (info->list_command); if(list) { command=GetDesktopCommand((gchar*)list->data); if(command.s) { command=g_strdup_printf("%s '%s' &",command.s,name); } else printf("Не найдена команда %s\n",(gchar*)list->data); } } g_free(p); } else if(IsExecute(name,file_stat,1)) { command = g_strdup_printf("\"%s\" &",name); } if(command.s) system(command.s); }
char* VolNameToFirstName(const char *VolName,char *FirstName,bool NewNumbering) { if (FirstName!=VolName) strcpy(FirstName,VolName); char *VolNumStart=FirstName; if (NewNumbering) { int N='1'; for (char *ChPtr=GetVolNumPart(FirstName);ChPtr>FirstName;ChPtr--) if (isdigit(*ChPtr)) { *ChPtr=N; N='0'; } else if (N=='0') { VolNumStart=ChPtr+1; break; } } else { SetExt(FirstName,"rar"); VolNumStart=GetExt(FirstName); } if (!FileExist(FirstName)) { char Mask[NM]; strcpy(Mask,FirstName); SetExt(Mask,"*"); FindFile Find; Find.SetMask(Mask); struct FindData FD; while (Find.Next(&FD)) { Archive Arc; if (Arc.Open(FD.Name,FD.NameW) && Arc.IsArchive(true) && !Arc.NotFirstVolume) { strcpy(FirstName,FD.Name); break; } } } return(VolNumStart); }
void SetExt(char *Name,const char *NewExt) { char *Dot=GetExt(Name); if (NewExt==NULL) { if (Dot!=NULL) *Dot=0; } else if (Dot==NULL) { strcat(Name,"."); strcat(Name,NewExt); } else strcpy(Dot+1,NewExt); }
void SetExt(wchar *Name,const wchar *NewExt) { if (Name==NULL || *Name==0) return; wchar *Dot=GetExt(Name); if (NewExt==NULL) { if (Dot!=NULL) *Dot=0; } else if (Dot==NULL) { wcscat(Name,L"."); wcscat(Name,NewExt); } else wcscpy(Dot+1,NewExt); }
void SetExt(wchar *Name,const wchar *NewExt) { if (Name==NULL || *Name==0) return; wchar *Dot=GetExt(Name); if (NewExt==NULL) { if (Dot!=NULL) *Dot=0; } else if (Dot==NULL) { strcatw(Name,L"."); strcatw(Name,NewExt); } else strcpyw(Dot+1,NewExt); }
bool JBlotPiece::PtIn( int px, int py ) const { int spID = GetSkinPackID(); int frID = GetSkinFrame(); Frame ext = GetExt(); if (spID == -1 || frID == -1) { return ext.PtIn( px, py ); } Vec2 pixPos( float( px ) - ext.x, float( py ) - ext.y ); float scale; if (m_bSelected) scale = m_Scale; else scale = 1.0f; pixPos /= scale; DWORD clr = g_pDrawServer->GetPixel( spID, frID, pixPos ); DWORD alpha = (clr&0xFF000000)>>24; return (alpha > 0x50); } // JBlotPiece::PtIn