<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: folder code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 08:54:27 GMT</pubDate>
    <description>DZone Snippets: folder code</description>
    <item>
      <title>unix, pack folder and contents with tar gz</title>
      <link>http://snippets.dzone.com/posts/show/3075</link>
      <description>&lt;code&gt;&lt;br /&gt;tar -zcvf packagename.tar.gz folder/&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 04 Dec 2006 16:28:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3075</guid>
      <author>assbach (assbach)</author>
    </item>
    <item>
      <title>removeDir //PHP Function</title>
      <link>http://snippets.dzone.com/posts/show/2448</link>
      <description>Removes a folder, including its subfolders and files in a efficient way without recursion, returns Boolean.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;&lt;br /&gt;function removeFolder($dir){&lt;br /&gt;	if(!is_dir($dir))&lt;br /&gt;		return false;&lt;br /&gt;	for($s = DIRECTORY_SEPARATOR, $stack = array($dir), $emptyDirs = array($dir); $dir = array_pop($stack);){&lt;br /&gt;		if(!($handle = @dir($dir)))&lt;br /&gt;			continue;&lt;br /&gt;		while(false !== $item = $handle-&gt;read())&lt;br /&gt;			$item != '.' &amp;&amp; $item != '..' &amp;&amp; (is_dir($path = $handle-&gt;path . $s . $item) ?&lt;br /&gt;			array_push($stack, $path) &amp;&amp; array_push($emptyDirs, $path) : unlink($path));&lt;br /&gt;		$handle-&gt;close();&lt;br /&gt;	}&lt;br /&gt;	for($i = count($emptyDirs); $i--; rmdir($emptyDirs[$i]));&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 20 Aug 2006 21:26:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2448</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Path parser //Pascal class</title>
      <link>http://snippets.dzone.com/posts/show/2195</link>
      <description>An unit to get the special folders' path under windows and it also parses paths shortcuts in the form "$(shortcut)/folder/file.ext".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;unit PathParser;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Classes, SysUtils, TypInfo, SysUtils2, ShlObj, ShellApi, Registry, Windows;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TSpecialFolder = ( sfDesktop, sfAppData, sfTemplates, sfPrograms,&lt;br /&gt;    sfPersonal, sfFavorites, sfStartup, sfRecent, sfSendTo, sfStartMenu,&lt;br /&gt;    sfFonts, sfHistory, sfCookies, sfInternetCache, sfCommonFavorites,&lt;br /&gt;    sfCommonDesktop, sfCommonStartup, sfCommonPrograms, sfCommonStartMenu,&lt;br /&gt;    sfProgramFiles, sfTemporary, sfWindows, sfSystem );&lt;br /&gt;&lt;br /&gt;  TSpecialFolderSet = set of TSpecialFolder;&lt;br /&gt;&lt;br /&gt;  TPathParser = class( TStringList )&lt;br /&gt;  public&lt;br /&gt;    constructor Create( const UseDefaultMap: Boolean = True );&lt;br /&gt;    class function GetSpecialFolder( const Name: TSpecialFolder ): string;&lt;br /&gt;    function Parse( Path: string ): string;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{ TPathParser }&lt;br /&gt;&lt;br /&gt;uses Dialogs;&lt;br /&gt;&lt;br /&gt;constructor TPathParser.Create(const UseDefaultMap: Boolean);&lt;br /&gt;var&lt;br /&gt;  I: TSpecialFolder;&lt;br /&gt;begin&lt;br /&gt;  CaseSensitive := False;&lt;br /&gt;  if UseDefaultMap then begin&lt;br /&gt;    for I := Low( TSpecialFolder ) to High( TSpecialFolder ) do&lt;br /&gt;      Add( RemoveSlash( LowerCase( Copy( GetEnumName( TypeInfo( TSpecialFolder ),&lt;br /&gt;        Ord( I ) ), 3, MAX_PATH ) ) + '=' + GetSpecialFolder( I ) ) );&lt;br /&gt;    Add( RemoveSlash( Format( 'windowsvolume=%s', [ GetSpecialFolder( sfWindows )[1] ] ) ) );&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;class function TPathParser.GetSpecialFolder(&lt;br /&gt;  const Name: TSpecialFolder): string;&lt;br /&gt;const&lt;br /&gt;  FoldersMap: array[TSpecialFolder] of Cardinal = ( CSIDL_DESKTOP,&lt;br /&gt;    CSIDL_APPDATA, CSIDL_TEMPLATES, CSIDL_PROGRAMS, CSIDL_PERSONAL,&lt;br /&gt;    CSIDL_FAVORITES, CSIDL_STARTUP, CSIDL_RECENT, CSIDL_SENDTO, CSIDL_STARTMENU,&lt;br /&gt;    CSIDL_FONTS, CSIDL_HISTORY, CSIDL_COOKIES, CSIDL_INTERNET_CACHE,&lt;br /&gt;    CSIDL_COMMON_FAVORITES, CSIDL_COMMON_DESKTOPDIRECTORY, CSIDL_COMMON_STARTUP,&lt;br /&gt;    CSIDL_COMMON_PROGRAMS, CSIDL_COMMON_STARTMENU, 0, 0, 0, 0 );&lt;br /&gt;var&lt;br /&gt;  Res: Bool;&lt;br /&gt;  Path: array[0..MAX_PATH-1] of Char;&lt;br /&gt;  Reg: TRegistry;&lt;br /&gt;begin&lt;br /&gt;  Result := '';&lt;br /&gt;  case Name of&lt;br /&gt;    sfWindows: GetWindowsDirectory( Path, MAX_PATH );&lt;br /&gt;    sfTemporary: GetTempPath( MAX_PATH, Path );&lt;br /&gt;    sfSystem: GetSystemDirectory( Path, MAX_PATH );&lt;br /&gt;    sfProgramFiles:&lt;br /&gt;    begin&lt;br /&gt;      Reg := TRegistry.Create( KEY_READ );&lt;br /&gt;      try&lt;br /&gt;        Reg.RootKey := HKEY_LOCAL_MACHINE;&lt;br /&gt;        Reg.OpenKey( 'SOFTWARE\Microsoft\Windows\CurrentVersion', False );&lt;br /&gt;        Result := AddSlash( Reg.ReadString( 'ProgramFilesDir' ) );&lt;br /&gt;      finally&lt;br /&gt;        Reg.Free;&lt;br /&gt;      end;&lt;br /&gt;      Exit;&lt;br /&gt;    end;&lt;br /&gt;  else&lt;br /&gt;    Res := ShGetSpecialFolderPath( 0, Path, FoldersMap[ Name ], False );&lt;br /&gt;    if not Res then&lt;br /&gt;      raise Exception.Create( ClassName + '.GetSpecialFolder: Error on ShGetSpecialFolderPath' );&lt;br /&gt;  end;&lt;br /&gt;  Result := AddSlash( Path );&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TPathParser.Parse(Path: string): string;&lt;br /&gt;var&lt;br /&gt;  S: string;&lt;br /&gt;  I, I2, Pos: Integer;&lt;br /&gt;begin&lt;br /&gt;  I := 1;&lt;br /&gt;  while I &lt;= Length( Path )-3 do&lt;br /&gt;  begin&lt;br /&gt;    if ( Path[I] = '$' ) and ( Path[I+1] = '(' ) then&lt;br /&gt;    begin&lt;br /&gt;      I2 := I + 2;&lt;br /&gt;      while ( I2 &lt;= Length( Path ) ) and ( Path[I2] &lt;&gt; ')' ) do&lt;br /&gt;        Inc( I2 );&lt;br /&gt;      if I2 &gt; Length( Path ) then&lt;br /&gt;        Break;&lt;br /&gt;      S := Copy( Path, I + 2, I2 - ( I + 2 ) );&lt;br /&gt;      System.Delete( Path, I, I2 - I + 1 );&lt;br /&gt;      Pos := IndexOfName( S );&lt;br /&gt;      if Pos &gt; -1 then&lt;br /&gt;      begin&lt;br /&gt;        System.Insert( ValueFromIndex[Pos], Path, I );&lt;br /&gt;        Inc( I, Length( ValueFromIndex[Pos] ) );&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;        raise Exception.CreateFmt( '%s.Parse: Vari&#225;vel "%s" inexistente', [ ClassName, S ] ); //I := I2 + 1;&lt;br /&gt;    end&lt;br /&gt;    else&lt;br /&gt;      Inc( I );&lt;br /&gt;  end;&lt;br /&gt;  Result := Path;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 15 Jun 2006 18:40:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2195</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Find the "My Documents" folder on Windows</title>
      <link>http://snippets.dzone.com/posts/show/570</link>
      <description>&lt;code&gt;&lt;br /&gt;from win32com.shell import shell&lt;br /&gt;df = shell.SHGetDesktopFolder()&lt;br /&gt;pidl = df.ParseDisplayName(0, None,  &lt;br /&gt;    "::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]&lt;br /&gt;mydocs = shell.SHGetPathFromIDList(pidl)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Copied from Kevin Dangoor's blog here&lt;br /&gt;http://www.blueskyonmars.com/2005/08/05/finding-a-users-my-documents-folder-on-windows/</description>
      <pubDate>Mon, 08 Aug 2005 23:01:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/570</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
