home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
System
/
ScalosPrefs
/
examples
/
C
/
multiple.c
< prev
next >
Wrap
C/C++ Source or Header
|
1980-07-31
|
3KB
|
95 lines
/* Simple example of using multiple data items per tag. */
/* Always included first */
#include <exec/types.h>
/* So we can use the functions from these libraries */
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/preferences.h>
/* For the MAKE_ID macro */
#include <libraries/iffparse.h>
/* For the PrefsStruct structure */
#include <scalos/preferences.h>
/* some standard stuff */
#include <stdio.h>
#include <string.h>
/* Pointer to the preferences.library base */
struct Library *PreferencesBase;
int main(void)
{
STRPTR prefname = "Example"; /* Name to refer to our PrefsHandle with */
APTR prefhandle; /* Handle to our preferences set */
ULONG ID, Tag; /* ID and Tag are used to access a specific preferences item */
char temp[128]; /* Space to retrieve the data from the PrefsHandle */
LONG en; /* The current entry number within the Tag */
if(NULL != (PreferencesBase = OpenLibrary("preferences.library", 39)) )
{
/* First we need to allocate a PrefsHandle by name */
if(NULL != (prefhandle = AllocPrefsHandle(prefname)) )
{
printf("PrefsHandle successfully allocated\n");
/* We need an ID and Tag value to refer to a specific preference.
* so we create that here (you could always just put them in the library calls).
* Remember that the ID must be created from 4 ASCII characters and the Tag
* cannot be 0
*/
ID = MAKE_ID('M','A','I','N');
Tag = 2;
/* We keep track of the current entry number so that we can keep on adding
* at the end of the list of data items. You can of course pass any entry
* number and the data will be inserted in the correct place in the list,
* unless the data item already exists and the size is the same, in which
* case the old data will be overwritten
*/
en = 0;
/* A loop which allows the user to enter some data to be stored */
do
{
/* Prompt user and get a string from them */
printf("Enter a string or leave blank to quit and press return:\n ");
gets(temp);
/* If the string is empty we do not do anything with it, as that
* is the condition for quitting the loop
*/
if(strlen(temp) > 0)
{
SetEntry(prefhandle, ID, Tag, temp, strlen(temp)+1, en);
en++;
}
} while(strlen(temp) > 0);
/* Now we will show each data item in turn, as well as removing it,
* this means we do not need to play around with entry numbers here
*/
while(GetEntry(prefhandle, ID, Tag, temp, 128, 0) > 0)
{
printf("Retrieved: %s\n", temp);
if(RemEntry(prefhandle, ID, Tag, 0)) printf("Entry removed\n"); else printf("Entry not removed\n");
}
/* Finally, we free the PrefsHandle */
FreePrefsHandle(prefhandle);
}
CloseLibrary(PreferencesBase);
}
return(0);
}