TweetFollow Us on Twitter

Aug 98 Tips

Volume Number: 14 (1998)
Issue Number: 8
Column Tag: Tips & Tidbits

August 1998 Tips

by Steve Sisak, tips@mactech.com

Gotcha - Calling GetResource()

If you call Get1Resource(), expecting to get a resource from the topmost resource file, you can be unpleasantly surprised. With the introduction of the "Fonts" folder in System 7.1, a patch was made to the resource manager so that all the files in the fonts folder will appear to be part of the System file, even though they are not.

Most of the time this is not a problem, since most people don't care if a resource is in the System file or in a file in the fonts folder (or in the enabler, or in ROM).

However, if you absolutely need to know the file where a resource is loading from, you can use HomeResFile(). It will return the refNum of the resource file the resource came from.

Marshall Clow, Adobe Systems


Determining if a Resource File was Actually Opened

When you use any of the Resource Manager calls for opening a resource file, and the resource file is already open by the Resource Manager with that access, it will not open the file again. Instead, it returns the refNum of the already-open reference, and also does the equivalent of a UseResFile() on that refNum.

This means you have to be careful if your code is capable of opening and closing arbitrary resource files - if the Resource Manager didn't actually open the file for you (for example if you were to open your own application, or the System file, or a suitcase in the Fonts folder), then you must not close it with CloseResFile().

So how do you tell if the resource file was actually opened for you or not?

It's easy: if the resource file was opened, then its resource map will be added to the top of the in-memory chain of resource maps (pointed to by the "TopMapHndl" low-memory global). If not, then the chain remains unchanged.

The following sequence illustrates the idea:

  SInt16    TheResFile, PreviousResFile;
  Boolean   ReallyOpened;
  Handle    PreviousTop;

  PreviousResFile = CurResFile();
  PreviousTop = LMGetTopMapHndl();
  TheResFile = FSpOpenResFile(ResFileSpec, Permissions);

/* checking for errors omitted */

  ReallyOpened = LMGetTopMapHndl() != PreviousTop;

/* do your processing on the resources, then when finished, restore things as they were: */

  if (ReallyOpened)
    CloseResFile(TheResFile);
  UseResFile(PreviousResFile);

Lawrence D'Oliveiro, Hamilton, New Zealand


Serial Port Tidbits Comments

Thanks for the informative article bringing together a lot of previously hard to find information. I spent many hours digging around (and cursing!) trying to find that same info.

I had written a similar routine to your FindPortInfo() routine, and after checking mine, I initially thought there might be a bug in yours. I finally realized that your code was in fact right, but there is a subtlety which might not be apparent to readers.

In the line:

while ((crm = CRMSearch(crm)) != nil)

a key point is that you are reassigning to crm the result of the search. In my code I was using a temporary variable to pass to CRMSearch(), as in

while ((foundCRM = CRMSearch(tempCRM)) != nil)

This means that in my code, after the EqualString() check, I need to insert:

tempCRM->crmDeviceID = foundCRM->crmDeviceID;

to avoid a potential infinite loop.

Your code (and the code in the CTB book) avoids this by using the same variable in the assignment, but that also hides this subtle point CRMSearch() starts looking from the device ID passed to it in the crmDeviceID field of the CRMRecPtr passed to it.

One other thing I'd like to mention is that instead of your IsDriverOpen() routine, you could call the Connection Resource Manager routine CRMIsDriverOpen(), described in the Communications Toolbox 1.1 Engineering Notes (not in the original CTB book - the 1.1 notes are another hard-to-find source...)

Jim Wintermyre, E-mu Systems, Inc.

Ed Note: The fact that CRMSearch() looks at the deviceID and deviceType passed in and returns the device of the same type with the next higher ID. This is a subtlety worth noting. Also, the CTB 1.1 Engineering Notes are an important resource I forgot to mention in the original article.
-sgs

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

OmniPlan Pro 3.6 - Professional-grade pr...
With OmniPlan Pro, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success... Read more
Little Snitch 3.7.1 - Alerts you about o...
Little Snitch gives you control over your private outgoing data. Track background activity As soon as your computer connects to the Internet, applications often have permission to send any... Read more
iMazing 2.1.3 - Complete iOS device mana...
iMazing (was DiskAid) is the ultimate iOS device manager with capabilities far beyond what iTunes offers. With iMazing and your iOS device (iPhone, iPad, or iPod), you can: Copy music to and from... Read more
AppDelete 4.3.1 - $7.99
AppDelete is an uninstaller that will remove not only applications but also widgets, preference panes, plugins, and screensavers along with their associated files. Without AppDelete these associated... Read more
FileZilla 3.23.0.2 - Fast and reliable F...
FileZilla (ported from Windows) is a fast and reliable FTP client and server with lots of useful features and an intuitive interface. Version 3.23.0.2: Bug Fixes and Minor Changes Speed up icon... Read more
PDFpen 8.3 - $74.95
PDFpen allows users to easily edit PDF's. Add text, images and signatures. Fill out PDF forms. Merge or split PDF documents. Reorder and delete pages. Even correct text and edit graphics! Features... Read more
TunnelBear 3.0.8 - Subscription-based pr...
TunnelBear is a subscription-based virtual private network (VPN) service and companion app, enabling you to browse the internet privately and securely. Features Browse privately - Secure your data... Read more
Safari Technology Preview 10.1 - The new...
Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies. And once installed, you will receive notifications of... Read more
Ableton Live 9.7.1 - Record music using...
Ableton Live lets you create and record music on your Mac. Use digital instruments, pre-recorded sounds, and sampled loops to arrange, produce, and perform your music like never before. Ableton Live... Read more
BetterTouchTool 1.963 - Customize Multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom... Read more

Latest Forum Discussions

See All

Bully: Anniversary Edition (Games)
Bully: Anniversary Edition 1.03.1 Device: iOS Universal Category: Games Price: $6.99, Version: 1.03.1 (iTunes) Description: *** PLEASE NOTE: This game is officially supported on the following devices: iPhone 5 and newer, iPod Touch... | Read more »
PINE GROVE (Games)
PINE GROVE 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: A pine grove where there are no footsteps of people due to continuous missing cases. The case is still unsolved and nothing has... | Read more »
Niantic teases new Pokémon announcement...
After rumors started swirling yesterday, it turns out there is an official Pokémon GO update on its way. We’ll find out what’s in store for us and our growing Pokémon collections tomorrow during the Starbucks event, but Niantic will be revealing... | Read more »
3 reasons why Nicki Minaj: The Empire is...
Nicki Minaj is as business-savvy as she is musically talented and she’s proved that by launching her own game. Designed by Glu, purveyors of other fine celebrity games like cult favorite Kim Kardashian: Hollywood, Nicki Minaj: The Empire launched... | Read more »
Clash of Clans is getting its own animat...
Riding on its unending wave of fame and success, Clash of Clans is getting an animated web series based on its Clash-A-Rama animated shorts.As opposed to the current shorts' 60 second run time, the new and improved Clash-A-Rama will be comprised of... | Read more »
Leaks hint at Pokémon GO and Starbucks C...
Leaked images from a hub for Starbucks employees suggests that a big Pokémon GO event with the coffee giant could begin this very week. The images appeared on Reddit and hint at some exciting new things to come for Niantic's smash hit game. | Read more »
Silent Depth Submarine Simulation (Game...
Silent Depth Submarine Simulation 1.0 Device: iOS Universal Category: Games Price: $7.99, Version: 1.0 (iTunes) Description: | Read more »
Enneas Saga lets you lead your own demon...
Defend the land of Enneas Continent from the forces of evil in the new fantasy MMORPG from Lyto Mobi: Enneas Saga. Can’t wait? No problem. It’s available to download now on Android devices. | Read more »
Great zombie games in the spirit of Dead...
Dead Rising 4 arrives tomorrow, giving enthusiasts a fresh chance to take selfies with zombies and get up to other ridiculous end-of-the-world shenanigans. To really get into the spirit of things, we've gone and gathered the best zombie games that... | Read more »
Amateur Surgeon 4 Guide: Advanced tips a...
Amateur Surgeon 4 is still tackling the competition at the top of the App Store charts, so if you haven't tried it out yet, you should probably do that right away. If you've been at it for a while, though, perhaps you're ready to start expanding... | Read more »

Price Scanner via MacPrices.net

Holiday sale: 12-inch Retina MacBook for $100...
B&H has 12″ Retina MacBooks on sale for $100 off MSRP as part of their Holiday sale. Shipping is free, and B&H charges NY sales tax only: - 12″ 1.1GHz Space Gray Retina MacBook: $1199 $100... Read more
Apple refurbished 13-inch MacBook Airs availa...
Apple has Certified Refurbished 13″ MacBook Airs available starting at $849. An Apple one-year warranty is included with each MacBook, and shipping is free: - 13″ 1.6GHz/8GB/128GB MacBook Air: $849 $... Read more
Apple refurbished iMacs available for up to $...
Apple has Certified Refurbished 2015 21″ & 27″ iMacs available for up to $350 off MSRP. Apple’s one-year warranty is standard, and shipping is free. The following models are available: - 21″ 3.... Read more
Apple’s Education discount saves up to $300 o...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free: -... Read more
Back in stock: Apple refurbished Mac minis fr...
Apple has Certified Refurbished Mac minis available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $80 off MSRP - 2.6GHz Mac... Read more
Twenty-Five Years Of Apple Laptops – A person...
Among many other things, the often tumultuous 16th year of the new century marked the 25th anniversary of Apple laptop computers, not counting the optimistically named 16-pound Mac Portable of 1989.... Read more
Landlordy iOS App Adds Support For Appliances...
Riga, Latvia based E-protect SIA is releasing major update (version 1.8) to its Landlordy app for managing rental business financials on the go. Landlordy is iPhone and iPad app designed for self-... Read more
Holiday sale, Apple iMacs for up to $200 off...
B&H Photo has 21″ and 27″ Apple iMacs on sale for up to $200 off MSRP including free shipping plus NY sales tax only: - 27″ 3.3GHz iMac 5K: $2099 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $... Read more
Holiday sale: Mac minis for $50 to $100 off M...
B&H Photo has Mac minis on sale for up to $100 off MSRP free shipping plus NY sales tax only: - 1.4GHz Mac mini: $449 $50 off MSRP - 2.6GHz Mac mini: $629 $70 off MSRP - 2.8GHz Mac mini: $899 $... Read more
Mac Pros on sale for up to $300 off MSRP, ref...
B&H Photo has Mac Pros on sale for up to $300 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2799, $200 off MSRP - 3.5GHz 6-core Mac Pro: $3699, $... Read more

Jobs Board

*Apple* Retail - Multiple Positions- Philade...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions- San Ant...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Products Tester Needed - Apple (Unit...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
SW Engineer *Apple* TV Frameworks - Apple I...
The Apple TV team is looking for a software...create features that reflect the look and feel of Apple TV. Description: Were looking for someone who is Read more
Hardware Design Validation Engineer - *Apple...
The Apple Watch team is looking for a Hardware Design Validation Engineer. This person will be part of the Apple Watch hardware team with responsibilities for Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.