1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="UCB" script:language="StarBasic">'Option explicit 24*b1cdbd2cSJim JagielskiPublic oDocument 25*b1cdbd2cSJim JagielskiPublic oDocInfo as object 26*b1cdbd2cSJim JagielskiConst SBMAXDIRCOUNT = 10 27*b1cdbd2cSJim JagielskiDim CurDirMaxCount as Integer 28*b1cdbd2cSJim JagielskiDim sDirArray(SBMAXDIRCOUNT-1) as String 29*b1cdbd2cSJim JagielskiDim DirIndex As Integer 30*b1cdbd2cSJim JagielskiDim iDirCount as Integer 31*b1cdbd2cSJim JagielskiPublic bInterruptSearch as Boolean 32*b1cdbd2cSJim JagielskiPublic NoArgs()as New com.sun.star.beans.PropertyValue 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim JagielskiSub Main() 35*b1cdbd2cSJim JagielskiDim LocsfileContent(0) as String 36*b1cdbd2cSJim Jagielski LocsfileContent(0) = "*" 37*b1cdbd2cSJim Jagielski ReadDirectories("file:///space", LocsfileContent(), True, False, false) 38*b1cdbd2cSJim JagielskiEnd Sub 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski' ReadDirectories( sSourceDir, bRecursive, bCheckRealType, False, sFileContent(), sLocExtension) 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim JagielskiFunction ReadDirectories(ByVal AnchorDir As String, bRecursive as Boolean, bcheckFileType as Boolean, bGetByTitle as Boolean, Optional sFileContent(), Optional sExtension as String) 43*b1cdbd2cSJim JagielskiDim i as integer 44*b1cdbd2cSJim JagielskiDim Status as Object 45*b1cdbd2cSJim JagielskiDim FileCountinDir as Integer 46*b1cdbd2cSJim JagielskiDim RealFileContent as String 47*b1cdbd2cSJim JagielskiDim FileName as string 48*b1cdbd2cSJim JagielskiDim oUcbObject as Object 49*b1cdbd2cSJim JagielskiDim DirContent() 50*b1cdbd2cSJim JagielskiDim CurIndex as Integer 51*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 52*b1cdbd2cSJim JagielskiDim StartUbound as Integer 53*b1cdbd2cSJim JagielskiDim FileExtension as String 54*b1cdbd2cSJim Jagielski StartUbound = 5 55*b1cdbd2cSJim Jagielski MaxIndex = StartUBound 56*b1cdbd2cSJim Jagielski CurDirMaxCount = SBMAXDIRCOUNT 57*b1cdbd2cSJim JagielskiDim sFileArray(StartUbound,1) as String 58*b1cdbd2cSJim Jagielski On Local Error Goto FILESYSTEMPROBLEM: 59*b1cdbd2cSJim Jagielski CurIndex = -1 60*b1cdbd2cSJim Jagielski ' Todo: Is the last separator valid? 61*b1cdbd2cSJim Jagielski DirIndex = 0 62*b1cdbd2cSJim Jagielski sDirArray(iDirIndex) = AnchorDir 63*b1cdbd2cSJim Jagielski iDirCount = 1 64*b1cdbd2cSJim Jagielski oDocInfo = CreateUnoService("com.sun.star.document.DocumentProperties") 65*b1cdbd2cSJim Jagielski oUcbObject = createUnoService("com.sun.star.ucb.SimpleFileAccess") 66*b1cdbd2cSJim Jagielski If oUcbObject.Exists(AnchorDir) Then 67*b1cdbd2cSJim Jagielski Do 68*b1cdbd2cSJim Jagielski AnchorDir = sDirArray(DirIndex) 69*b1cdbd2cSJim Jagielski On Local Error Resume Next 70*b1cdbd2cSJim Jagielski DirContent() = oUcbObject.GetFolderContents(AnchorDir,True) 71*b1cdbd2cSJim Jagielski DirIndex = DirIndex + 1 72*b1cdbd2cSJim Jagielski On Local Error Goto 0 73*b1cdbd2cSJim Jagielski On Local Error Goto FILESYSTEMPROBLEM: 74*b1cdbd2cSJim Jagielski If Ubound(DirContent()) <> -1 Then 75*b1cdbd2cSJim Jagielski FileCountinDir = Ubound(DirContent())+ 1 76*b1cdbd2cSJim Jagielski For i = 0 to FilecountinDir -1 77*b1cdbd2cSJim Jagielski If bInterruptSearch = True Then 78*b1cdbd2cSJim Jagielski Exit Do 79*b1cdbd2cSJim Jagielski End If 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski Filename = DirContent(i) 82*b1cdbd2cSJim Jagielski If oUcbObject.IsFolder(FileName) Then 83*b1cdbd2cSJim Jagielski If brecursive Then 84*b1cdbd2cSJim Jagielski AddFoldertoList(FileName, DirIndex) 85*b1cdbd2cSJim Jagielski End If 86*b1cdbd2cSJim Jagielski Else 87*b1cdbd2cSJim Jagielski If bcheckFileType Then 88*b1cdbd2cSJim Jagielski RealFileContent = GetRealFileContent(FileName) 89*b1cdbd2cSJim Jagielski Else 90*b1cdbd2cSJim Jagielski RealFileContent = GetFileNameExtension(FileName) 91*b1cdbd2cSJim Jagielski End If 92*b1cdbd2cSJim Jagielski If RealFileContent <> "" Then 93*b1cdbd2cSJim Jagielski ' Retrieve the Index in the Array, where a Filename is positioned 94*b1cdbd2cSJim Jagielski If Not IsMissing(sFileContent()) Then 95*b1cdbd2cSJim Jagielski If (FieldinArray(sFileContent(), Ubound(sFileContent), RealFileContent)) Then 96*b1cdbd2cSJim Jagielski ' The extension of the current file passes the filter and is therefor admitted to the 97*b1cdbd2cSJim Jagielski ' fileList 98*b1cdbd2cSJim Jagielski If Not IsMissing(sExtension) Then 99*b1cdbd2cSJim Jagielski If sExtension <> "" Then 100*b1cdbd2cSJim Jagielski ' Consider that some Formats like old StarOffice Templates with the extension ".vor" can only be 101*b1cdbd2cSJim Jagielski ' precisely identified by their mimetype and their extension 102*b1cdbd2cSJim Jagielski FileExtension = GetFileNameExtension(FileName) 103*b1cdbd2cSJim Jagielski If FileExtension = sExtension Then 104*b1cdbd2cSJim Jagielski AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex) 105*b1cdbd2cSJim Jagielski End If 106*b1cdbd2cSJim Jagielski Else 107*b1cdbd2cSJim Jagielski AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex) 108*b1cdbd2cSJim Jagielski End If 109*b1cdbd2cSJim Jagielski Else 110*b1cdbd2cSJim Jagielski AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex) 111*b1cdbd2cSJim Jagielski End If 112*b1cdbd2cSJim Jagielski End If 113*b1cdbd2cSJim Jagielski Else 114*b1cdbd2cSJim Jagielski AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex) 115*b1cdbd2cSJim Jagielski End If 116*b1cdbd2cSJim Jagielski If CurIndex = MaxIndex Then 117*b1cdbd2cSJim Jagielski MaxIndex = MaxIndex + StartUbound 118*b1cdbd2cSJim Jagielski ReDim Preserve sFileArray(MaxIndex,1) as String 119*b1cdbd2cSJim Jagielski End If 120*b1cdbd2cSJim Jagielski End If 121*b1cdbd2cSJim Jagielski End If 122*b1cdbd2cSJim Jagielski Next i 123*b1cdbd2cSJim Jagielski End If 124*b1cdbd2cSJim Jagielski Loop Until DirIndex >= iDirCount 125*b1cdbd2cSJim Jagielski If CurIndex > -1 Then 126*b1cdbd2cSJim Jagielski ReDim Preserve sFileArray(CurIndex,1) as String 127*b1cdbd2cSJim Jagielski Else 128*b1cdbd2cSJim Jagielski ReDim sFileArray() as String 129*b1cdbd2cSJim Jagielski End If 130*b1cdbd2cSJim Jagielski Else 131*b1cdbd2cSJim Jagielski Msgbox("Directory '" & ConvertFromUrl(AnchorDir) & "' does not exist!", 16, GetProductName()) 132*b1cdbd2cSJim Jagielski End If 133*b1cdbd2cSJim Jagielski ReadDirectories() = sFileArray() 134*b1cdbd2cSJim Jagielski Exit Function 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski FILESYSTEMPROBLEM: 137*b1cdbd2cSJim Jagielski Msgbox("Sorry, Filesystem Problem") 138*b1cdbd2cSJim Jagielski ReadDirectories() = sFileArray() 139*b1cdbd2cSJim Jagielski Resume LEAVEPROC 140*b1cdbd2cSJim Jagielski LEAVEPROC: 141*b1cdbd2cSJim JagielskiEnd Function 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim JagielskiSub AddFoldertoList(sDirURL as String, iDirIndex) 145*b1cdbd2cSJim Jagielski iDirCount = iDirCount + 1 146*b1cdbd2cSJim Jagielski If iDirCount = CurDirMaxCount Then 147*b1cdbd2cSJim Jagielski CurDirMaxCount = CurDirMaxCount + SBMAXDIRCOUNT 148*b1cdbd2cSJim Jagielski ReDim Preserve sDirArray(CurDirMaxCount) as String 149*b1cdbd2cSJim Jagielski End If 150*b1cdbd2cSJim Jagielski sDirArray(iDirCount-1) = sDirURL 151*b1cdbd2cSJim JagielskiEnd Sub 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim JagielskiSub AddFileNameToList(sFileArray(), FileName as String, FileContent as String, bGetByTitle as Boolean, CurIndex) 155*b1cdbd2cSJim JagielskiDim FileCount As Integer 156*b1cdbd2cSJim Jagielski CurIndex = CurIndex + 1 157*b1cdbd2cSJim Jagielski sFileArray(CurIndex,0) = FileName 158*b1cdbd2cSJim Jagielski If bGetByTitle Then 159*b1cdbd2cSJim Jagielski sFileArray(CurIndex,1) = RetrieveDocTitle(oDocInfo, FileName) 160*b1cdbd2cSJim Jagielski ' Add the documenttitles to the Filearray 161*b1cdbd2cSJim Jagielski Else 162*b1cdbd2cSJim Jagielski sFileArray(CurIndex,1) = FileContent 163*b1cdbd2cSJim Jagielski End If 164*b1cdbd2cSJim JagielskiEnd Sub 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim JagielskiFunction RetrieveDocTitle(oDocProps as Object, sFileName as String) As String 168*b1cdbd2cSJim JagielskiDim sDocTitle as String 169*b1cdbd2cSJim Jagielski On Local Error Goto NOFILE 170*b1cdbd2cSJim Jagielski oDocProps.loadFromMedium(sFileName, NoArgs()) 171*b1cdbd2cSJim Jagielski sDocTitle = oDocProps.Title 172*b1cdbd2cSJim Jagielski NOFILE: 173*b1cdbd2cSJim Jagielski If Err <> 0 Then 174*b1cdbd2cSJim Jagielski RetrieveDocTitle = "" 175*b1cdbd2cSJim Jagielski RESUME CLR_ERROR 176*b1cdbd2cSJim Jagielski End If 177*b1cdbd2cSJim Jagielski CLR_ERROR: 178*b1cdbd2cSJim Jagielski If sDocTitle = "" Then 179*b1cdbd2cSJim Jagielski sDocTitle = GetFileNameWithoutExtension(sFilename, "/") 180*b1cdbd2cSJim Jagielski End If 181*b1cdbd2cSJim Jagielski RetrieveDocTitle = sDocTitle 182*b1cdbd2cSJim JagielskiEnd Function 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski' Retrieves The Filecontent of a Document by extracting the content 186*b1cdbd2cSJim Jagielski' from the Header of the document 187*b1cdbd2cSJim JagielskiFunction GetRealFileContent(FileName as String) As String 188*b1cdbd2cSJim Jagielski On Local Error Goto NOFILE 189*b1cdbd2cSJim Jagielski oTypeDetect = createUnoService("com.sun.star.document.TypeDetection") 190*b1cdbd2cSJim Jagielski GetRealFileContent = oTypeDetect.queryTypeByURL(FileName) 191*b1cdbd2cSJim Jagielski NOFILE: 192*b1cdbd2cSJim Jagielski If Err <> 0 Then 193*b1cdbd2cSJim Jagielski GetRealFileContent = "" 194*b1cdbd2cSJim Jagielski resume CLR_ERROR 195*b1cdbd2cSJim Jagielski End If 196*b1cdbd2cSJim Jagielski CLR_ERROR: 197*b1cdbd2cSJim JagielskiEnd Function 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim JagielskiFunction CopyRecursively(SourceFilePath as String, SourceStemDir as String, TargetStemDir as String) 201*b1cdbd2cSJim JagielskiDim TargetDir as String 202*b1cdbd2cSJim JagielskiDim TargetFile as String 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski TargetFile= ReplaceString(SourceFilePath, TargetStemDir, SourceStemDir) 205*b1cdbd2cSJim Jagielski TargetFileName = FileNameoutofPath(TargetFile,"/") 206*b1cdbd2cSJim Jagielski TargetDir = DeleteStr(TargetFile, TargetFileName) 207*b1cdbd2cSJim Jagielski CreateFolder(TargetDir) 208*b1cdbd2cSJim Jagielski CopyRecursively() = TargetFile 209*b1cdbd2cSJim JagielskiEnd Function 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski' Opens a help url referenced by a Help ID that is retrieved from the calling button tag 213*b1cdbd2cSJim JagielskiSub ShowHelperDialog(aEvent) 214*b1cdbd2cSJim JagielskiDim oSystemNode as Object 215*b1cdbd2cSJim JagielskiDim sSystem as String 216*b1cdbd2cSJim JagielskiDim oLanguageNode as Object 217*b1cdbd2cSJim JagielskiDim sLocale as String 218*b1cdbd2cSJim JagielskiDim sLocaleList() as String 219*b1cdbd2cSJim JagielskiDim sLanguage as String 220*b1cdbd2cSJim JagielskiDim sHelpUrl as String 221*b1cdbd2cSJim JagielskiDim sDocType as String 222*b1cdbd2cSJim Jagielski HelpID = aEvent.Source.Model.Tag 223*b1cdbd2cSJim Jagielski oLocDocument = StarDesktop.ActiveFrame.Controller.Model 224*b1cdbd2cSJim Jagielski sDocType = GetDocumentType(oLocDocument) 225*b1cdbd2cSJim Jagielski oSystemNode = GetRegistryKeyContent("org.openoffice.Office.Common/Help") 226*b1cdbd2cSJim Jagielski sSystem = oSystemNode.GetByName("System") 227*b1cdbd2cSJim Jagielski oLanguageNode = GetRegistryKeyContent("org.openoffice.Setup/L10N/") 228*b1cdbd2cSJim Jagielski sLocale = oLanguageNode.getByName("ooLocale") 229*b1cdbd2cSJim Jagielski sLocaleList() = ArrayoutofString(sLocale, "-") 230*b1cdbd2cSJim Jagielski sLanguage = sLocaleList(0) 231*b1cdbd2cSJim Jagielski sHelpUrl = "vnd.sun.star.help://" & sDocType & "/" & HelpID & "?Language=" & sLanguage & "&System=" & sSystem 232*b1cdbd2cSJim Jagielski StarDesktop.LoadComponentfromUrl(sHelpUrl, "OFFICE_HELP", 63, NoArgs()) 233*b1cdbd2cSJim JagielskiEnd Sub 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim JagielskiSub SaveDataToFile(FilePath as String, DataList()) 237*b1cdbd2cSJim JagielskiDim FileChannel as Integer 238*b1cdbd2cSJim JagielskiDim i as Integer 239*b1cdbd2cSJim JagielskiDim oFile as Object 240*b1cdbd2cSJim JagielskiDim oOutputStream as Object 241*b1cdbd2cSJim JagielskiDim oStreamString as Object 242*b1cdbd2cSJim JagielskiDim oUcb as Object 243*b1cdbd2cSJim JagielskiDim sCRLF as String 244*b1cdbd2cSJim Jagielski 245*b1cdbd2cSJim Jagielski sCRLF = CHR(13) & CHR(10) 246*b1cdbd2cSJim Jagielski oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") 247*b1cdbd2cSJim Jagielski oOutputStream = createUnoService("com.sun.star.io.TextOutputStream") 248*b1cdbd2cSJim Jagielski If oUcb.Exists(FilePath) Then 249*b1cdbd2cSJim Jagielski oUcb.Kill(FilePath) 250*b1cdbd2cSJim Jagielski End If 251*b1cdbd2cSJim Jagielski oFile = oUcb.OpenFileReadWrite(FilePath) 252*b1cdbd2cSJim Jagielski oOutputStream.SetOutputStream(oFile.GetOutputStream) 253*b1cdbd2cSJim Jagielski For i = 0 To Ubound(DataList()) 254*b1cdbd2cSJim Jagielski oOutputStream.WriteString(DataList(i) & sCRLF) 255*b1cdbd2cSJim Jagielski Next i 256*b1cdbd2cSJim Jagielski oOutputStream.CloseOutput() 257*b1cdbd2cSJim JagielskiEnd Sub 258*b1cdbd2cSJim Jagielski 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim JagielskiFunction LoadDataFromFile(FilePath as String, DataList()) as Boolean 261*b1cdbd2cSJim JagielskiDim oInputStream as Object 262*b1cdbd2cSJim JagielskiDim i as Integer 263*b1cdbd2cSJim JagielskiDim oUcb as Object 264*b1cdbd2cSJim JagielskiDim oFile as Object 265*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 266*b1cdbd2cSJim Jagielski oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") 267*b1cdbd2cSJim Jagielski If oUcb.Exists(FilePath) Then 268*b1cdbd2cSJim Jagielski MaxIndex = 10 269*b1cdbd2cSJim Jagielski oInputStream = createUnoService("com.sun.star.io.TextInputStream") 270*b1cdbd2cSJim Jagielski oFile = oUcb.OpenFileReadWrite(FilePath) 271*b1cdbd2cSJim Jagielski oInputStream.SetInputStream(oFile.GetInputStream) 272*b1cdbd2cSJim Jagielski i = -1 273*b1cdbd2cSJim Jagielski Redim Preserve DataList(MaxIndex) 274*b1cdbd2cSJim Jagielski While Not oInputStream.IsEOF 275*b1cdbd2cSJim Jagielski i = i + 1 276*b1cdbd2cSJim Jagielski If i > MaxIndex Then 277*b1cdbd2cSJim Jagielski MaxIndex = MaxIndex + 10 278*b1cdbd2cSJim Jagielski Redim Preserve DataList(MaxIndex) 279*b1cdbd2cSJim Jagielski End If 280*b1cdbd2cSJim Jagielski DataList(i) = oInputStream.ReadLine 281*b1cdbd2cSJim Jagielski Wend 282*b1cdbd2cSJim Jagielski If i > -1 And i <> MaxIndex Then 283*b1cdbd2cSJim Jagielski Redim Preserve DataList(i) 284*b1cdbd2cSJim Jagielski End If 285*b1cdbd2cSJim Jagielski LoadDataFromFile() = True 286*b1cdbd2cSJim Jagielski oInputStream.CloseInput() 287*b1cdbd2cSJim Jagielski Else 288*b1cdbd2cSJim Jagielski LoadDataFromFile() = False 289*b1cdbd2cSJim Jagielski End If 290*b1cdbd2cSJim JagielskiEnd Function 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski 293*b1cdbd2cSJim JagielskiFunction CreateFolder(sNewFolder) as Boolean 294*b1cdbd2cSJim JagielskiDim oUcb as Object 295*b1cdbd2cSJim Jagielski oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") 296*b1cdbd2cSJim Jagielski On Local Error Goto NOSPACEONDRIVE 297*b1cdbd2cSJim Jagielski If Not oUcb.Exists(sNewFolder) Then 298*b1cdbd2cSJim Jagielski oUcb.CreateFolder(sNewFolder) 299*b1cdbd2cSJim Jagielski End If 300*b1cdbd2cSJim Jagielski CreateFolder = True 301*b1cdbd2cSJim JagielskiNOSPACEONDRIVE: 302*b1cdbd2cSJim Jagielski If Err <> 0 Then 303*b1cdbd2cSJim Jagielski If InitResources("", "dbw") Then 304*b1cdbd2cSJim Jagielski ErrMsg = GetResText(500) 305*b1cdbd2cSJim Jagielski ErrMsg = ReplaceString(ErrMsg, chr(13), "<BR>") 306*b1cdbd2cSJim Jagielski ErrMsg = ReplaceString(ErrMsg, sNewFolder, "%1") 307*b1cdbd2cSJim Jagielski Msgbox(ErrMsg, 48, GetProductName()) 308*b1cdbd2cSJim Jagielski End If 309*b1cdbd2cSJim Jagielski CreateFolder = False 310*b1cdbd2cSJim Jagielski Resume GOON 311*b1cdbd2cSJim Jagielski End If 312*b1cdbd2cSJim JagielskiGOON: 313*b1cdbd2cSJim JagielskiEnd Function 314*b1cdbd2cSJim Jagielski</script:module> 315