[comp.sys.mac.programmer] novice mac programmer needs help with PBOpenWD calls..

dauter@terminator.cc.umich.edu (Michael Dautermann) (05/20/91)

  
Hello...

  Up until three or so weeks ago, if someone had told me I would
be actually WRITING programs for the mac, I probably would have 
laughed out loud... amazingly enough, one of the departments at
U-M has hired me to do MPW-C programming (yes.. MPW..) and I feel
like I've learned 1000% more about interfaces, design, and the C
language in general ever since I started...
  
  I'm having a problem in the benchmarking program I'm writing, 
though.. What follows is a listing of a function that I'm using 
to create 100+ empty files within a folder that is also created
from within the program.  When I call PBOpenWD, I crash out with
a -37 system error (bad file name) or sometimes also -43, file not
found.  It might have something to do with Multifinder, but I'm
not sure... I have no idea what a ioWDProcID is, either (and I can't
find any helpful hints from the tech notes I've looked over)...

  Would somebody take a few seconds and look at this code and let me
know what I am doing wrong?  Thanks so much for any help...
  
Michael...

------

void TestProcess( void )

{

long			timestart, timefinish; /* the time of testing... */
Point			where = {40, 40}; /* where shall we write these files? */
Str255			origName = "\pTest Folder", filename;
SFReply			reply;
HParamBlockRec	paramBlock;
WDPBRec			wdBlock;
short			x;



/* first thing we want to do is define where we are to 
   perform the test... */


SFPutFile( where, "\pWhere shall we test?", origName, nil, &reply) ;

if ( reply.good == false ) return;

paramBlock.fileParam.ioVRefNum = reply.vRefNum;
paramBlock.fileParam.ioCompletion = nil;
paramBlock.fileParam.ioNamePtr = reply.fName; 
paramBlock.fileParam.ioDirID = 0;
			
	if ( PBDirCreate (&paramBlock, false) != noErr) {
		DebugStr( "\pdamnnumberbooboo" );
		ExitToShell();
	}

wdBlock.ioCompletion = nil;
wdBlock.ioWDProcID = paramBlock.fileParam.ioDirID ;
wdBlock.ioVRefNum = paramBlock.fileParam.ioVRefNum;	
wdBlock.ioWDDirID = paramBlock.fileParam.ioDirID;	
wdBlock.ioNamePtr = filename;
wdBlock.ioWDIndex = 0;
wdBlock.ioWDVRefNum = reply.vRefNum;

	if ( PBOpenWD( &wdBlock, false ) != noErr) {
		DebugStr( "\pcantdoPBopenWD" );
		ExitToShell();
	}
	
	if ( PBGetWDInfo( &wdBlock, false) != noErr) {
		DebugStr( "\pcantdoPBgetinfoWD" );
		ExitToShell();
	}

	if ( highlights.crfilesonoff == on ) {
			
	strcpy( filename+1, "test" ); 
		for ( x = 0; x < preferences.numbertocreate; x++) {
			itoa ( x, filename+5 );
			filename[0] = strlen( filename+1 );

			
			if ( Create( filename, wdBlock.ioVRefNum, 'elvs', 'live' ) != noErr) {
						DebugStr( "\pdamncreatefilesbooboo" );
						ExitToShell();
				}
			
			
		}
	}

}


--
-----------------------------------------------------------------
Mike @ ccs.itd.umich.edu
(  (  ( ( (( in stereo )) ) ) )  )
Mike Dautermann - U-M Ann Arbor, Dearborn and the WORLD!!