
           Discussion of Extended Attributes and UNIMAINT

Extended Attributes are added to directories and files to describe the
contents, use, association and many other aspects of the directory or
file. The Extended Attributes are not an actual part of the file, but
are associated with the file. For HPFS this Extended Attribute
information is kept in the Directory entry, for FAT the information is
kept in a separate file, since there is not enough room in the
directory. Refer to the OS/2 documentation for a more complete
discussion of Extended Attributes themselves.

One of the problems with OS/2 is that, while it makes extensive use of
Extended Attributes, it does not provide the user with the tools
necessary to deal with problems or give users the tools necessary to
understand them. While this is a problem for everyone, it is especially
a problem for developers who might want to take advantage of Extended
Attributes in their applications.

UNIMAINT is designed to allow the user to look at the Extended
Attributes that are present on their system, edit them, if necessary,
and do a number of different kinds of maintenance functions. However,
before discussing how UNIMAINT handles Extended Attributes, it is
necessary to be sure that everyone understands a little about how
Extended Attributes are structured. The following discussion assumes
that the reader is already familiar with UNIMAINT, the structure of the
UNIMAINT windows and how UNIMAINT displays and maintains INI Files.

There is a parallel between how INI files are structured and how
Extended Attributes are structured so UNIMAINT uses most of the
UNIMAINT code to handle the Extended Attributes. INI Files are
organized into Applications that have one or more Keys and each Key has
a Value assigned to that Key. Extended Attributes are associated with a
Directory or a File, each of which can have more than one Extended
Attribute and each Extended Attribute has a Name and an associated
value. Therefore, UNIMAINT will display the names of the Directories or
Files in the Application Window, the Names of the Extended Attributes
in the Key Name Window and the Extended Attribute Value in the Key
Value Window.

The approach above works very well for Simple Extended Attributes.
However, the parallel between INI Files and Extended Attributes breaks
down when it encounters a Multiple Value Extended Attribute, so some
modifications are needed to handle this situation.

There are three general types of Extended Attributes as far as UNIMAINT
is concerned:

1. Extended Attributes that UNIMAINT does not understand and will
display just as they are found.

2. Simple Extended Attributes that use the type identifiers that are
documented in the OS/2 documentation. These are Extended Attributes
that closely parallel the INI File structure and are displayed that
way.

3. Multiple Extended Attributes, which are Extended Attributes that
contain other Extended Attributes. These are the Extended Attributes
that do not closely parallel the INI File structure.

There were two different ways that UNIMAINT could handle the Multiple
Value Extended Attributes:

1. They could simply be identified as Multiple Value and the entire
Extended Attribute could be placed in the Key Value Window.

2. The structure of the Multiple Value Extended Attribute could be
decoded and displayed in the windows in a decoded form.

Since the decoding of the Multiple Value Extended Attributes is not a
trivial task, especially since a Multiple Value Extended Attribute can
contain other Multiple Value Extended Attributes, thus causing multiple
levels of decoding, UNIMAINT will decode the Multiple Value Extended
Attributes and display them in decoded form. This causes a single
Extended Attribute to have multiple entries in the Key Name window. In
order to create unique Key Entries and to display the level of the
Extended Attribute, each Key Name will be followed by two additional
pieces of data, each placed inside a pair of parens.

1. The Level of the Extended Attribute. For a Simple Extended Attribute
this will simply be: (01). For a Multiple Value Extended Attribute the
numbers will start with (01) and increase by one for each of the
Extended Attributes within the initial one. If another level of
Multiple Value Extended Attributes is encountered, then an additional
level will be added to the Level Information: (04.01), would mean that
the fourth main level Extended Attribute is a Multiple Value Extended
Attribute and this is the first entry for that Extended Attribute.

2. The type of Extended Attribute, such as Ascii, Binary, Icon or
Multiple Value.

This arrangement sounds complicated, but it ends up looking very much
like an outline would look and is not difficult to understand. Since
all of the entries will start with the name of the Extended Attribute,
it is very easy to know which entries go with which.

The on-line Help for UNIMAINT has extensive detailed descriptions of
how to select which Extended Attributes you want to operate on, what
operation you want done and how you want to handle the various default
actions. Therefore, it might be very useful to review the On-line Help
before doing much with the actual Extended Attributes.

Finally, a word of warning and a request for help.

The warning is that Extended Attributes can be critical to the health
of you environment. Therefore, you should not do something with the
Extended Attributes on your system if you are not sure you understand
what you are doing. You cannot hurt yourself if you simply look at
Extended Attributes via the Edit Function or Save them. However,
something like Splitting the Extended Attributes from a file will leave
the file without the Attributes. If you are doing it so you can backup
the file under DOS and will be careful to Join the Extended Attributes
back to the files before you use them. If you are not sure about what
you want to do, seek help from a knowledgeable source.

The request for help involves supplying documentation on any unusual
conditions you might encounter. One of the items in the Default Dialog
for the Extended Attributes is to activate a log to the INIEA.LOG file.
Anytime you encounter a condition where UNIMAINT cannot handle an
Extended Attribute condition or have invalid Extended Attributes, turn
on the logging, ask to Edit the Extended Attributes that are invalid or
causing a problem, close UNIMAINT, zip the resulting INIEA.LOG file and
E-mail it to SHS via the www.filestar.com web site.
