mbt masai
 
Welcome !
         

                                
After experiencing a lot of down time, We decided to move this site to CrystalTech.com. CrystalTech.com is powered by only the finest Windows servers providing the best performance, reliability, and value anywhere.

 grep challenge

Author Message
ehvbs

  • Total Posts : 3310
  • Scores: 110
  • Reward points : 0
  • Joined: 6/22/2005
  • Location: Germany
  • Status: offline
grep challenge Tuesday, August 25, 2009 7:45 AM (permalink)
0
As this forum lately is (cunningly?) misused for plain questions, here is a challenge:

Write a script that prints the lines of a text file that match/contain a search
string/pattern.

   (easy): print the lines found only

   (intermediate): print the matching lines and n lines after each such line

   (expert): print n lines before, the match, and m lines after that line

Sample output (n==m==1) (expert):

 ------- Looking for Line
 Line 0
 Line 1
 Line 2 X
 Line 3
 Line 4 X
 Line 5
 Line 6
 Line 7 X
 Line 8
 ------- Looking for Nix
 ------- Looking for 0
 Line 0
 Line 1
 ------- Looking for 1
 Line 0
 Line 1
 Line 2 X
 ------- Looking for 2
 Line 1
 Line 2 X
 Line 3
 ------- Looking for 3
 Line 2 X
 Line 3
 Line 4 X
 ------- Looking for 7
 Line 6
 Line 7 X
 Line 8
 ------- Looking for 8
 Line 7 X
 Line 8
 ------- Looking for X
 Line 1
 Line 2 X
 Line 3
 Line 5
 Line 6
 Line 7 X
 Line 8
 ------- Looking for \d
 Line 0
 Line 1
 Line 2 X
 Line 3
 Line 4 X
 Line 5
 Line 6
 Line 7 X
 Line 8


(genius): find the error in the sample output.

#1
    dm_4ever

    • Total Posts : 3673
    • Scores: 82
    • Reward points : 0
    • Joined: 6/29/2006
    • Location: Orange County, California
    • Status: offline
    Re:grep challenge Tuesday, August 25, 2009 8:47 AM (permalink)
    0
    Shouldn't the following return Line 2, 4, and 7

     ------- Looking for X
     Line 1
     Line 2 X
     Line 3
     Line 5
     Line 6
     Line 7 X
     Line 8

    dm_4ever

    My philosophy: K.I.S.S - Keep It Simple Stupid
    Read Me: http://www.visualbasicscript.com/m_24727/tm.htm
    Frequently Asked Stuff: http://www.visualbasicscript.com/m_47117/tm.htm
    #2
      ehvbs

      • Total Posts : 3310
      • Scores: 110
      • Reward points : 0
      • Joined: 6/22/2005
      • Location: Germany
      • Status: offline
      Re:grep challenge Tuesday, August 25, 2009 6:27 PM (permalink)
      0
      exactly, dm 'genius' 4ever!
      #3
        dm_4ever

        • Total Posts : 3673
        • Scores: 82
        • Reward points : 0
        • Joined: 6/29/2006
        • Location: Orange County, California
        • Status: offline
        Re:grep challenge Monday, August 31, 2009 9:10 AM (permalink)
        0
        Not really...I'm still trying to figure out a regular expression that may get these results since I can get close but I'm afraid my limited knowledge of regular expressions is making it a bit difficult...I also hate reading technical stuff so it will take a while.
        dm_4ever

        My philosophy: K.I.S.S - Keep It Simple Stupid
        Read Me: http://www.visualbasicscript.com/m_24727/tm.htm
        Frequently Asked Stuff: http://www.visualbasicscript.com/m_47117/tm.htm
        #4
          TNO

          • Total Posts : 2089
          • Scores: 34
          • Reward points : 0
          • Joined: 12/18/2004
          • Location: Earth
          • Status: offline
          Re:grep challenge Tuesday, September 15, 2009 5:25 AM (permalink)
          0
          Regrettably I haven't had the time to give an attempt at this yet. The approach I had in mind was to use VBScript as a cheap wrapper around the DOS FIND and DOS DIR /S commands. Maybe that could save time for someone else solving this problem before I have a chance to sit down and give this a shot.
          To iterate is human, to recurse divine. -- L. Peter Deutsch
          #5
            suchafunkymonkey

            • Total Posts : 8
            • Scores: 0
            • Reward points : 0
            • Joined: 11/16/2009
            • Status: offline
            Re:grep challenge Monday, November 16, 2009 4:30 AM (permalink)
            0
            Here's a quick go at it.  The code below has the search terms hardcoded (for now) and can only search for strings and no wildcards, but you should get the idea:

             
             'Author:  David Nicholson
             'Date: 16th November 2009
             '
             'This code may be used freely, but if you found it useful
             'drop me a line at suchafunkymonkey@btinternet.com
             '
             
             
             Dim i, a, b, c, d,e, myarr, objSource, strLine, objTEMP, objFSO, linesbefore, linesafter, searchtext
             redim myarr(-1)
             Const ForReading = 1
             
             linesbefore = 2
             linesafter = 1
             searchtext = "findme"
             
             'Open inputfile
             Set objFSO = CreateObject("Scripting.FileSystemObject")
             Set objSource = objFSO.OpenTextFile("inputtest.txt", ForReading)
             
             'If output file exists, delete
             if objFSO.FileExists("output.txt") then
                 objFSO.DeleteFile("output.txt")
             end if
             
             ' Put inputfile contents in to array
             i = 1
             do until objSource.AtEndOfStream
                 redim preserve myarr(i)
                 myarr(i) = objSource.Readline
                 i = i + 1
             loop
             
             'open output file
             
             set objTEMP = objFSO.OpenTextFile("output.txt", 8, True)
             
             for a = 0 to i-1
             strLine = myarr(a)
             if instr(strLine, searchtext) > 0 then
             'Check if lines before are required, if so do not go beyond line 1
             if linesbefore > 0 then
                if a - linesbefore > 0 then
                   b = a - linesbefore  
                else
                   b = 1
                end if
             for c = b to a-1
             'Write out linesbefore
                objTEMP.WriteLine (myarr(c))
             next
             end if
             'Write out line with match
             objTEMP.WriteLine ("Found: " & strLine & " on line " & a)
             'Check if lines after is required
             if linesafter > 0 then
             if a + linesafter > ubound(myarr) then
                d = ubound(myarr)
             else
                d = a +linesafter
             end if
             for e = a+1 to d
             'Write out lines after
             objTEMP.WriteLine (myarr(e))
             next
             end if
             
             end if
             next
             
             'Close file
             
             objTEMP.Close
             objSource.Close
             
             Set objSource = Nothing
             Set objTEMP = Nothing
             Set objFSO = Nothing
             

            #6
              suchafunkymonkey

              • Total Posts : 8
              • Scores: 0
              • Reward points : 0
              • Joined: 11/16/2009
              • Status: offline
              Re:grep challenge Monday, November 16, 2009 4:52 AM (permalink)
              0
              A better version.  This one accepts parameters, filename, lines before and lines after.  Could do with the last 2 being optional, but I'm not sure how to do that with VBScript.
               'Author:  David Nicholson
               'Date: 16th November 2009
               '
               'This code may be used freely, but if you found it useful
               'drop me a line at suchafunkymonkey@btinternet.com
               '
               
               
               Dim i, a, b, c, d, e, myarr, objSource, strLine, objFSO, linesbefore, linesafter, searchtext
               redim myarr(-1)
               Const ForReading = 1
               
               If (Wscript.Arguments.Count < 3) Then  
               Wscript.Echo "Required Parameters missing.  Usage grep.vbs inputfile linesbefore linesafter"   
               Wscript.Quit  
               end if
               
               
               
               linesbefore = Wscript.Arguments(1)
               linesafter = Wscript.Arguments(2)
               searchtext = Wscript.Arguments(0)
               
               'Open inputfile
               Set objFSO = CreateObject("Scripting.FileSystemObject")
               Set objSource = objFSO.OpenTextFile("inputtest.txt", ForReading)
               
               ' Put inputfile contents in to array
               i = 1
               do until objSource.AtEndOfStream
                   redim preserve myarr(i)
                   myarr(i) = objSource.Readline
                   i = i + 1
               loop
               
               'open output file
               
               for a = 0 to i-1
               strLine = myarr(a)
               if instr(strLine, searchtext) > 0 then
               'Check if lines before are required, if so do not go beyond line 1
               if linesbefore > 0 then
                  if a - linesbefore > 0 then
                     b = a - linesbefore  
                  else
                     b = 1
                  end if
               for c = b to a-1
               'Write out linesbefore
                  WScript.StdOut.Write("Line " & c & ": " &myarr(c)& vbcr & vblf)
               next
               end if
               'Write out line with match
               WScript.StdOut.Write("Line " & a & ": " & strLine  & vbcr & vblf )
               'Check if lines after is required
               if linesafter > 0 then
               if a + linesafter > ubound(myarr) then
                  d = ubound(myarr)
               else
                  d = a +linesafter
               end if
               for e = a+1 to d
               'Write out lines after
               WScript.StdOut.Write("Line " & e & ": " & myarr(e)& vbcr & vblf)
               next
               end if
               
               end if
               next
               
               objSource.Close
               
               Set objSource = Nothing
               Set objFSO = Nothing
               

              #7
                suchafunkymonkey

                • Total Posts : 8
                • Scores: 0
                • Reward points : 0
                • Joined: 11/16/2009
                • Status: offline
                Re:grep challenge Monday, November 16, 2009 10:52 PM (permalink)
                0
                The code has been cleaned up and the variable names have been changed to make it more readable for someone trying to learn this.
                 'File:  Grep.vbs
                 'Purpose: Scan a defined file for a defined string and return matches, lines before and lines after
                 'Author:  David Nicholson
                 'Date: 17th November 2009
                 '
                 'This code may be used freely, but if you found it useful
                 'drop me a line at suchafunkymonkey@btinternet.com
                 '
                 
                 
                 Dim streampointer, arraypointer, prearraypointer, prearraytowrite, postarraypointer, postarraywrite, inputfilearray, objSource, inputline, objFSO, linesbefore, linesafter, searchtext, searchfile
                 redim inputfilearray(-1)
                 Const ForReading = 1
                 
                 If (Wscript.Arguments.Count < 3) Then  
                 Wscript.Echo "Required Parameters missing.  Usage csript grep.vbs inputfile searchtext linesbefore linesafter"   
                 Wscript.Quit  
                 end if
                 
                 
                 
                 linesbefore = Wscript.Arguments(2)
                 linesafter = Wscript.Arguments(3)
                 searchtext = Wscript.Arguments(1)
                 searchfile = Wscript.Arguments(0)
                 
                 'Open inputfile
                 Set objFSO = CreateObject("Scripting.FileSystemObject")
                 Set objSource = objFSO.OpenTextFile(searchfile, ForReading)
                 
                 ' Put inputfile contents in to array
                 streampointer = 1
                 do until objSource.AtEndOfStream
                     redim preserve inputfilearray(streampointer)
                     inputfilearray(streampointer) = objSource.Readline
                     streampointer = streampointer + 1
                 loop
                 
                 'open output file
                 
                 for arraypointer = 0 to streampointer-1
                 inputline = inputfilearray(arraypointer)
                 if instr(inputline, searchtext) > 0 then
                 'Check if lines before are required, if so do not go beyond line 1
                    if linesbefore > 0 and arraypointer-1 <> 1 then
                       if arraypointer - linesbefore > 0 then
                          prearraypointer = arraypointer - linesbefore  
                       else
                          prearraypointer = 1
                       end if
                    for prearraytowrite = prearraypointer to arraypointer-1
                       'Write out linesbefore
                       Wscript.StdOut.Write("Line " & prearraytowrite & ": " &inputfilearray(prearraytowrite)& vbcr & vblf)
                    next
                    end if
                    'Write out line with match
                    Wscript.StdOut.Write("Line " & arraypointer & ": " & inputline  & vbcr & vblf )
                    'Check if lines after is required
                    if linesafter > 0 then
                       if arraypointer + linesafter > ubound(inputfilearray) then
                          postarraypointer = ubound(inputfilearray)
                       else
                          postarraypointer = arraypointer +linesafter
                       end if
                       for postarraywrite = arraypointer+1 to postarraypointer
                       'Write out lines after
                       Wscript.StdOut.Write("Line " & postarraywrite & ": " & inputfilearray(postarraywrite)& vbcr & vblf)
                       next
                    end if
                 
                 end if
                 next
                 
                 objSource.Close
                 
                 Set objSource = Nothing
                 Set objFSO = Nothing
                 

                #8
                  ebgreen

                  • Total Posts : 8081
                  • Scores: 94
                  • Reward points : 0
                  • Joined: 7/12/2005
                  • Status: offline
                  Re:grep challenge Tuesday, November 17, 2009 4:22 AM (permalink)
                  0
                  Here is how I would do it:

                  Option Explicit     Dim oFSO : Set oFSO = CreateObject("Scripting.FilesystemObject")
                       Dim arrLines
                       Dim nPre
                       Dim nPost
                       Dim strFileName
                       Dim strPattern
                       Dim nCurrentLine
                       Dim strLine     strFileName = ""
                       strPattern = ""
                       nPre = 0
                       nPost = 0     strFileName = WScript.Arguments.Named("FILE")
                       strPattern = WScript.Arguments.Named("PATTERN")
                       nPre = WScript.Arguments.Named("PRE")
                       nPost = WScript.Arguments.Named("POST")     If strFileName = "" OR strPattern = "" Then
                        Usage
                       End If     If NOT oFSO.FIleExists(strFileName) Then
                        WScript.Echo "Could not find file " & strFileName
                        WScript.Quit
                       End If     arrLines = Split(oFSO.OpenTextFile(strFileName).ReadAll(), vbCrLf)
                       nCurrentLine = 0
                       For Each strLine In arrLines
                        If Instr(strLine, strPattern) > 0 Then
                         ReportLines arrLines, nCurrentLine, nPre, nPost
                        End If
                        nCurrentLine = nCurrentLine + 1
                       Next                 Sub ReportLines(arrLines, nLoc, nPre, nPost)
                        Dim strMsg
                        Dim nStart
                        Dim nEnd
                        Dim i      nStart = nLoc - nPre
                        nEnd = nLoc + nPost      if nStart < 0 Then nStart = 0
                        if nEnd > UBound(arrLines) Then nEnd = UBound(arrLines)      For i = nStart To nEnd
                         strMsg = strMsg & arrLines(i) & vbCrLf
                        Next      WScript.Echo strMsg
                       End Sub           Sub Usage()
                        WScript.Echo "This script must be called with at least two parameters (FILE and PATTERN)."
                        WScript.Echo "Allowable parameters are:"
                        WScript.Echo vbTab & "/FILE: - The path and name of the file to grep"
                        WScript.Echo vbTab & "/PATTERN: - The pattern to grep for"
                        WScript.Echo vbTab & "/PRE: - The number of previous lines to return"
                        WScript.Echo vbTab & "/POST: - The number of post lines to return"
                        WScript.Quit
                       End Sub
                        

                  "... when you are good and crazy, oooh, oooh, oooh, the sky is the limit!" - The Tick
                  Goog places to start:http://www.visualbasicscript.com/m_24727/tm.htm
                  http://www.visualbasicscript.com/m_47117/tm.htm
                  #9
                    TNO

                    • Total Posts : 2089
                    • Scores: 34
                    • Reward points : 0
                    • Joined: 12/18/2004
                    • Location: Earth
                    • Status: offline
                    Re:grep challenge Wednesday, November 25, 2009 10:31 AM (permalink)
                    0
                    I guess this kinda ruins the challenge:

                    FINDSTR /?
                    To iterate is human, to recurse divine. -- L. Peter Deutsch
                    #10
                      ehvbs

                      • Total Posts : 3310
                      • Scores: 110
                      • Reward points : 0
                      • Joined: 6/22/2005
                      • Location: Germany
                      • Status: offline
                      Re:grep challenge Thursday, November 26, 2009 6:45 AM (permalink)
                      0
                      Last things first: I don't consider this challenge ruined by the possiblity of
                      using findstr to grep for lines in a file, because

                        (a) the challenge is not about just solving a real world problem (for that
                            it would certainly be the 'best' solution to use some ready made tool
                            (e.g. grep)), but about doing something interesting (I hope) in VBScript

                        (b) AFAIK, you can't ask findstr for context (lines before/after)

                      Currently, I use this script:

                       '' sqa.vbs - software quality assurance script for project "grep challange"
                       '  #############################################################################
                       
                       Option Explicit
                       
                       Dim goFS  : Set goFS  = CreateObject( "Scripting.FileSystemObject" )
                       Dim goWSH : Set goWSH = CreateObject( "WScript.Shell" )
                       
                       WScript.Quit doMain()
                       
                       Function doMain()
                         Dim sFSpec
                         For Each sFSpec In Array( ".\linesincontext.txt" )
                             Dim sPat
                             For Each sPat In Array( "[1458]" )
                                 Dim aLBA
                                 For Each aLBA In Array( Array( 0, 0 ), Array( 1, 1 ) )
                                     Dim sExp : sExp = useGrep( sFSpec, sPat, aLBA( 0 ), aLBA( 1 ) )
                                     WScript.Echo "======================"
                                     WScript.Echo sExp
                                     Dim sFnc
                                     For Each sFnc In Array( "useFindstr", "useEhvbs", "useEBGreen", "useSafm" )
                                         Dim sRes : sRes = GetRef( sFnc )( sFSpec, sPat, aLBA( 0 ), aLBA( 1 ) )
                                         WScript.Echo sFnc, "works like grep:", CStr( sExp = sRes )
                                         WScript.Echo sRes
                                         WScript.Echo "----------------------"
                                     Next
                                 Next
                             Next
                         Next
                         doMain = 0
                       End Function
                       
                       Function useGrep( sFSpec, sPat, nLB, nLA )
                         Dim sCmd : sCmd = "f:\cygwin\bin\grep.exe -B" & nLB & " -A" & nLA & " " & sPat & " " & sFSpec
                         WScript.Echo sCmd
                         useGrep = goWSH.Exec( sCmd ).Stdout.ReadAll()
                       End Function
                       
                       Function useFindStr( sFSpec, sPat, nLB, nLA )
                         Dim sCmd : sCmd = "findstr /R /C:" & sPat & " " & sFSpec
                         WScript.Echo sCmd
                         useFindStr = goWSH.Exec( sCmd ).Stdout.ReadAll()
                       End Function
                       
                       Function useEhVbs( sFSpec, sPat, nLB, nLA )
                         Dim sCmd : sCmd = "cscript ehvbs02.vbs /B:" & nLB & " /A:" & nLA & " " & sPat & " " & sFSpec
                         WScript.Echo sCmd
                         useEhVbs = goWSH.Exec( sCmd ).Stdout.ReadAll()
                       End Function
                       
                       Function useEBGreen( sFSpec, sPat, nLB, nLA )
                         Dim sCmd : sCmd = "cscript ebgreen02.vbs /B:" & nLB & " /A:" & nLA & " " & sPat & " " & sFSpec
                         WScript.Echo sCmd
                         useEBGreen = goWSH.Exec( sCmd ).Stdout.ReadAll()
                       End Function
                       
                       Function useSafm( sFSpec, sPat, nLB, nLA )
                         Dim sCmd : sCmd = "cscript safm02.vbs /B:" & nLB & " /A:" & nLA & " " & sPat & " " & sFSpec
                         WScript.Echo sCmd
                         useSafm = goWSH.Exec( sCmd ).Stdout.ReadAll()
                       End Function
                       


                      to test different programs. From the output:

                       f:\cygwin\bin\grep.exe -B0 -A0 [1458] .\linesincontext.txt
                       ======================
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       findstr /R /C:[1458] .\linesincontext.txt
                       useFindstr works like grep: Wahr
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       ----------------------
                       cscript ehvbs02.vbs /B:0 /A:0 [1458] .\linesincontext.txt
                       useEhvbs works like grep: Wahr
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       ----------------------
                       cscript ebgreen02.vbs /B:0 /A:0 [1458] .\linesincontext.txt
                       useEBGreen works like grep: Wahr
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       ----------------------
                       cscript safm02.vbs /B:0 /A:0 [1458] .\linesincontext.txt
                       useSafm works like grep: Wahr
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       ----------------------
                       f:\cygwin\bin\grep.exe -B1 -A1 [1458] .\linesincontext.txt
                       ======================
                       Line 0
                       Line 1
                       Line 2
                       Line 3
                       Line 4
                       Line 5
                       Line 6
                       Line 7
                       Line 8
                       Line 9
                       
                       findstr /R /C:[1458] .\linesincontext.txt
                       useFindstr works like grep: Falsch
                       Line 1
                       Line 4
                       Line 5
                       Line 8
                       
                       ----------------------
                       cscript ehvbs02.vbs /B:1 /A:1 [1458] .\linesincontext.txt
                       useEhvbs works like grep: Wahr
                       Line 0
                       Line 1
                       Line 2
                       Line 3
                       Line 4
                       Line 5
                       Line 6
                       Line 7
                       Line 8
                       Line 9
                       
                       ----------------------
                       cscript ebgreen02.vbs /B:1 /A:1 [1458] .\linesincontext.txt
                       useEBGreen works like grep: Falsch
                       Line 0
                       Line 1
                       Line 2
                       Line 3
                       Line 4
                       Line 5
                       Line 4
                       Line 5
                       Line 6
                       Line 7
                       Line 8
                       Line 9
                       
                       ----------------------
                       cscript safm02.vbs /B:1 /A:1 [1458] .\linesincontext.txt
                       useSafm works like grep: Falsch
                       Line 1
                       
                       Line 3
                       Line 4
                       Line 4
                       Line 4
                       Line 5
                       Line 5
                       Line 7
                       Line 8
                       Line 8
                       
                       ----------------------
                       


                      I conclude, that the contest is still open.

                      I got the idea for this challenge while reading about (ring) buffers. So I
                      was surprised that both scripts used an extra array. To get a feling for this
                      approach, I wrote this program (ehvbs02.vbs):

                       '' ehvbs02.vbs - grep challenge: Scan a file for a regex and display matches,
                       ''                               lines before and lines after
                       '  #############################################################################
                       
                       Option Explicit
                       
                       Dim goFS : Set goFS = CreateObject( "Scripting.FileSystemObject" )
                       
                       WScript.Quit doMain()
                       
                       Function doMain()
                         Dim dicArgs : Set dicArgs = parseArgs()
                         Dim oRE     : Set oRE     = New RegExp
                         oRE.Pattern = dicArgs( 0 )
                         Dim aLines  : aLines      = Split( goFS.OpenTextFile( dicArgs( 1 ) ).ReadAll(), vbCrLf )
                         ReDim aShow( UBound( aLines ) )
                         Dim nIdxF
                         For nIdxF = 0 To UBound( aLines )
                             If oRE.Test( aLines( nIdxF ) ) Then
                                Dim nIdxB : nIdxB = Max( nIdxF - dicArgs( "B" ), LBound( aLines ) )
                                Dim nIdxA : nIdxA = Min( nIdxF + dicArgs( "A" ), UBound( aLines ) )
                                Dim nIdxS
                                For nIdxS = nIdxB To nIdxA
                                    aShow( nIdxS ) = True
                                Next
                             End If
                         Next
                         For nIdxF = 0 To UBound( aLines )
                             If aShow( nIdxF ) Then WScript.Echo aLines( nIdxF )
                         Next
                         doMain = 0
                       End Function
                       
                       Function Max( a, b )
                         If a > b Then Max = a Else Max = b End If
                       End Function
                       
                       Function Min( a, b )
                         If a < b Then Min = a Else Min = b End If
                       End Function
                       
                       Function parseArgs()
                         Dim dicRVal : Set dicRVal = CreateObject( "Scripting.Dictionary" )
                         Dim vItem
                         For Each vItem In WScript.Arguments.Named
                             dicRVal( vItem ) = WScript.Arguments.Named( vItem )
                         Next
                         Dim nCnt : nCnt = 0
                         For Each vItem In WScript.Arguments.UnNamed
                             dicRVal( nCnt ) = vItem
                             nCnt            = nCnt + 1
                         Next
                         Set parseArgs = dicRVal
                       End Function
                       


                      Thank you, dm_4ever, TNO, suchafunkymonkey, and ebgreen, for your interest and
                      effort spend on this challenge.

                      #11

                        Online Bookmarks Sharing: Share/Bookmark

                        Jump to:

                        Current active users

                        There are 0 members and 1 guests.

                        Icon Legend and Permission

                        • New Messages
                        • No New Messages
                        • Hot Topic w/ New Messages
                        • Hot Topic w/o New Messages
                        • Locked w/ New Messages
                        • Locked w/o New Messages
                        • Read Message
                        • Post New Thread
                        • Reply to message
                        • Post New Poll
                        • Submit Vote
                        • Post reward post
                        • Delete my own posts
                        • Delete my own threads
                        • Rate post

                        2000-2012 ASPPlayground.NET Forum Version 3.8
                        mbt shoes www.wileywilson.com