---
name: "rsrce"
section: "1"
platform: "linux"
package: "rsrce"
version: "0.2.2"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/rsrce"
---

# rsrce(1)

editor for raw MacOS resource forks

## NAME

rsrce - editor for raw MacOS resource forks

## SYNOPSIS

**rsrce** \[**-e**\] \[**-f *script***\] \[**-o *output-file***\] \[*input-file*\]

## DESCRIPTION

Rsrce is a command driven Macintosh resource fork editor for Unix-like operating systems. It works with raw resource forks stored in Unix files, such as the .rsrc files produced by the **macutil** package.

Rsrce doesn't allow you to edit the resource data directly. It only knows to import/export them from/to files, performing conversion for the few resource types it knows.

## OPTIONS

- **-e**

  When this option is given, the failure of an editor command will cause rsrce to quit immediately with a non-zero exit status. This is similar to the **-e** option to **/bin/sh**.

- **-f** *script*

  Instructs **rsrce** to read its commands from the given *script*, instead of using the standard input.

- **-o** *output-file*

  Specifies a default output file for the **write**command. Useful when calling **rsrce** scripts which save their changes with a **write** command without a filename.

If an *input-file* is specified, it is loaded before rsrce starts reading commands, and is used as the default output file if the **-o** option has not been given.

## USAGE

Rsrce reads commands from the standard input. Unquoted whitespace is ignored, except for the purpose of separating arguments. Empty lines are ignored, and a **#** at a position where an argument would have started indicates a comment which extends to the end of the line. Text within single quotes is used as-is. An unquoted backslash can be used the way it works in C strings, or to force literal interpretation of the following character.

Resources are referred to by specifing their type and id, separated by a colon. I mean, something like "STR#:128". If the given type has less than 4 letters, spaces are added to complete it.

The following commands are available:

- **read** \[*file*\]

  read the resources from *file*

- **write** \[*file*\]

  write the resources to *file*

- **create** *resource*

  create a new, empty resource with the given type and id

- **delete** *resource*

  remove the specified *resource*

- **rename** *resource* *new-name*

  change the name associated with *resource* to *new-name*

- **chattr** *resource* *attr-spec*

  change the attributes of *resource* according to *attr-spec*

- **ls**

  list each resource's type, id, attributes, data lenght, and name

- **hexdump** *resource*

  show an hexdump of *resource*'s data

- **import***\|***export** *resource* *file* **\[***ext***\]**

  import/export *resource*'s data from/to *file.* The conversion which is performed depends on the extension of the given filename. This extenstion may be overriden by providing the *ext*argument.

- **edit** *resource***\[***ext***\]**

  invoke an external editor to change *resource*'s data

- **help**

  list available commands

- **exit**

  terminate rsrce (without saving, use write before exit if you wish to save your changes)

## CONVERSION OF RESOURCE DATA

When **rsrce** imports or exports resource data, a conversion can be performed depending on the resource type and the extension of the provided filename.

The following extensions are known to **rsrce**:

- **bin**

  causes no conversion, the raw resource data is used regardless of the resource type;

- **txt**

  causes the resource data to be converted to plain text. This is possible for **STR**, **STR#**and**CMDL**resources.

## BUGS

Rsrce has only been originally created to change the configuration of the miBoot Linux bootloader for OldWorld PowerMac computers. Since I do not use MacOS, I haven't tested any other usage of this program. You should therefore be very careful when using it, as it could very well produce unusable output.

Another consequence of this is wildly missing functionnality. I'm not going to work on it, since I couldn't test anything in a real situation. Patches and/or usage reports would be very welcome.

## AUTHOR

Jeremie Koenig \<sprite@sprite.fr.eu.org\>

## SEE ALSO

[**hfsutils**(1)](/hfsutils/1.md), [**macutil**(1)](/macutil/1.md)
