World Library  
Flag as Inappropriate
Email this Article

Alias (Mac OS)

Article Id: WHEBN0000720672
Reproduction Date:

Title: Alias (Mac OS)  
Author: World Heritage Encyclopedia
Language: English
Subject: Mac OS, File shortcut, History of Mac OS, Alias, Network Browser
Collection: Mac Os
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Alias (Mac OS)

In Mac OS System 7 and later, an alias is a small file that represents another object in a local, remote, or removable[1] file system and provides a dynamic link to it; the target object may be moved or renamed, and the alias will still link to it (unless the original file is recreated; such an alias is ambiguous and how it is resolved depends on the version of OS X). In Windows, a "shortcut", a file with a .lnk extension, performs a similar function.

It is similar to the Unix symbolic link, but with the distinction of working even if the target file moves to another location on the same disk (in this case it acts like hard link, but the source and target of the link may be on different filesystems). As a descendant of BSD, OS X supports Unix symbolic (and hard) links as well.

Function

An alias acts as a stand-in for any object in the file system, such as a document, an application, a folder, a hard disk, a network share or removable medium or a printer. When double-clicked, the computer will act the same way as if the original file had been double-clicked. Likewise, choosing an alias file from within a 'File Open' dialog box would open the original file. The purpose of an alias is to assist the user in managing large numbers of files by providing alternative ways to access them without having to copy the files themselves. While a typical alias under the classic Mac OS was small, between 1 and 5 KB, under OS X it can be fairly large, more than 5000 KB for the alias to a folder.

Preventing Alias Failure

An alias is a dynamic reference to an object. The original may be moved to another place within the same filesystem, without breaking the link. The operating system stores several pieces of information about the original in the resource fork of the alias file. Examples of the information used to locate the original are:

  • path
  • file ID
  • directory ID
  • name
  • file size

Since any of these properties can change without the computer's knowledge, as a result of user activity, various search algorithms are used to find the most plausible target. This fault-tolerance sets the alias apart from similar functions in some other operating systems, such as the Unix symbolic link or the Microsoft Windows shortcut, at the expense of increased complexity and unpredictability. For example, an application can be moved from one directory to another within the same filesystem, but an existing alias would still launch the same application when double-clicked.

The question can arise of how an alias should work if a file is moved, and then a file is created with the same name as the original moved file, since the alias can be used to locate both the original name and the new location of the original file. With symbolic links the reference is unambiguous (soft links refer to the new file, hard links to the original). Before Mac OS 10.2, however, such an ambiguous alias would consistently find the original moved file, rather than the recreated file. From Mac OS 10.2, the new file is found, matching the behaviour of symbolic links [1]. OS X applications can programmatically use the old behavior if required.

Aliases are similar in operation to shadows in the graphical Workplace Shell of the OS/2 operating system.

Distinguishing marks

In System 7 through Mac OS 9, aliases distinguished themselves visually to the user by the fact that their file names were in italics. To accommodate languages that don't have italics (such as Japanese), in Mac OS 8.5 another distinguishing mark was added, badging with an "alias arrow"—a black arrow with a small white border—similar to that used for shortcuts in Microsoft Windows.

In OS X, the filenames of aliases are not italicized, but the arrow badge remains.

File structure

The alias files in Mac OS start by the magic number 62 6F 6F 6B 00 00 00 00 6D 61 72 6B 00 00 00 00 which is in ASCII book␀␀␀␀mark␀␀␀␀ ( representing the Null character).

Following the magic number, it has been reported that an alias has a set of records inside it, each record is 150 bytes long and consists of the fields shown below.[6] However, alias files are far larger than this would explain, and include other information at least including icons.[7][8]

  1. 4 bytes user type name/app creator code = long ASCII text string (none = 0)
  2. 2 bytes record size = short unsigned total length
  3. 2 bytes record version = short integer version (current version = 2)
  4. 2 bytes alias kind = short integer value (file = 0; directory = 1)
  5. 1 byte volume name string length = byte unsigned length
  6. 27 bytes volume name string (if volume name string < 27 chars then pad with zeros)
  7. 4 bytes volume created mac date = long unsigned value in seconds since beginning 1904 to 2040
  8. 2 bytes volume signature = short unsigned HFS value
  9. 2 bytes volume type = short integer mac os value (types are Fixed HD = 0; Network Disk = 1; 400kB FD = 2;800kB FD = 3; 1.4MB FD = 4; Other Ejectable Media = 5 )
  10. 4 bytes parent directory id = short unsigned HFS value
  11. 1 bytes file name string length = byte unsigned length
  12. 63 bytes file name string (if file name string < 63 chars then pad with zeros)
  13. 4 bytes file number = long unsigned HFS value
  14. 4 bytes file created mac date = long unsigned value in seconds since beginning 1904 to 2040
  15. 4 bytes file type name = long ASCII text string
  16. 4 bytes file creator name = long ASCII text string
  17. 2 bytes nlvl From (directories from alias thru to root) = short integer range
  18. 2 bytes nlvl To (directories from root thru to source) = short integer range (if alias on different volume then set above to -1)
  19. 4 bytes volume attributes = long hex flags
  20. 2 bytes volume file system id = short integer HFS value
  21. 10 bytes reserved = 80-bit value set to zero
  22. 4+ bytes optional extra data strings = short integer type + short unsigned string length (types are Extended Info End = -1; Directory Name = 0; Directory IDs = 1; Absolute Path = 2; AppleShare Zone Name = 3; AppleShare Server Name = 4; AppleShare User Name = 5; Driver Name = 6; Revised AppleShare info = 9; AppleRemoteAccess dialup info = 10)
  23. string data = hex dump
  24. odd lengths have a 1 byte odd string length pad = byte value set to zero

Alias record structure outside of size length

The following is for use with the Apple's Alias Resource Manager.

  1. 4 bytes resource type name = long ASCII text string
  2. 2 bytes resource ID = short integer value
  3. 2 bytes resource end pad = short value set to zero


Java Code to Flag an Alias File

  public static boolean checkForMacAliasFile( File inputFile ) throws FileNotFoundException, IOException
    {
        boolean gotMacAlias = false;

        // only files can be alias's.
        // Do not test directories, they will be false.
        // 
        if( inputFile.isFile() )
        {
            byte[] bookmark = new byte[]
            {
                0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
            };
            long length = inputFile.length();
            if( length > 16 )
            {
                byte[] result = new byte[ 16 ];
                BufferedInputStream bis = new BufferedInputStream( new FileInputStream( inputFile ) );
                bis.read( result );
                bis.close();
                gotMacAlias = Arrays.equals( result, bookmark );
                return ( gotMacAlias );
            }
        }        

        return ( false );
    }

Managing aliases

In System 7, the only way to create an alias was to select the original and choose "Make Alias" from the "File" menu. An alias, with the same name and " alias" appended would then be created in the same folder. In later versions, it became possible to create aliases by drag-and-drop, while holding down the command and option modifier keys.

Mac OS 8.5 added a feature for re-connecting aliases that had been broken for one reason or another (when the simple search algorithms failed to find a reliable replacement). This was done by selecting a new target through the standard Open File dialog.

In Mac OS 8.5 options were added for command-option dragging an object in the Finder to create an alias at that location. This is where the alias cursor was added to the system. The cursor mirrors the appearance of the "create shortcut" cursor on Windows systems.

Relation to BSD symbolic and hard links

Unix and similar operating systems provide 2 features very similar to Mac OS X aliases: symbolic links and hard links. When using the Mac OS X Finder, links are displayed and treated largely like Mac OS X aliases. However, when using the shell command line, Mac OS X aliases are not recognized: for example, you cannot use the cd command with the name of an alias file. This is because an alias is implemented as a file on the disk that must be interpreted by Mac API while links are implemented within the filesystem and are thus functional at any level of the OS.

As of this writing, there is no pre-installed command to resolve an alias to the path of the file or directory it refers to. However, a very small C program is freely available at [2] to use the Mac Carbon APIs to do this. Given that, commands such as cd can be set up to check for aliases and treat them just like symbolic or hard links.

References

  1. ^
  2. ^
  3. ^ a b
  4. ^
  5. ^ Also alternatively titled "Miami rapper Pitbull is poised to sink his teeth into rap's big time"
  6. ^ Some information about MacOS aliases collected from the web. (reverse engineering effort)
  7. ^ Forum discussion of the large size of aliases.
  8. ^ Further details, including changes with various Mac OS versions.

External links

  • Alias Manager Reference — Inside Macintosh developer documentation
  • System 7 aliases — Article about System 7 aliases, from 1992
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.