/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Label library contract private interfaces.
*
* Binary labels to String labels with dimming word lists.
* Dimming word list titles.
* Default user labels.
*/
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#include "clnt.h"
#include "labeld.h"
/*
* cvt memory:
*
* cvt: char *long_words[display_size]; Pointers to long words
* char *short_words[display_size]; Pointers to short words
* dim: char display[display_size]; Dim | Set
*
* strings associated with long and short words.
*
*/
/*
* Sensitivity Label words.
*/
static int slcvtsize = 0;
static char *sldim;
static int slstringsize = 0;
/*
* Clearance words.
*/
static int clrcvtsize = 0;
static char *clrdim;
static int clrstringsize = 0;
static
int
{
return (0);
} else {
return (0);
}
}
return (1);
}
/*
* build_strings - Build the static strings and dimming list for a
* converted label.
*
* Entry new_string = Newly converted string.
* new_words_size = Size of words associated with newly converted
* label.
* number_of_words = Number of words associated with newly
* converted label.
* full = 1, if static words lists to be updated.
* 0, if only string and dimming list to be updated.
*
* Exit static_string_size = Updated if needed.
* static_string = Updated to new label string.
* static_words_size = Updated if needed.
* static_words = Updated to new words list, if needed.
* static_dimming = Updated to new dimming state.
* long_words = Updated to new long words pointers, if needed.
* short_words = Updated to new short words pointers, if needed.
*
*
* Returns 0, If unable to allocate memory.
* 1, If successful.
*
* Calls alloc_string, alloc_words, memcpy, strcpy, strlen.
*/
static
int
{
char **l;
char **s;
char *w;
int i;
int len;
int newsize;
if (*static_string_size == 0) { /* Allocate string memory. */
*static_string_size, 'C')) == 0)
/* can't get string memory for string */
return (0);
}
/* need longer string */
'C')) == 0)
/* can't get more string memory */
return (0);
goto again;
}
if (full) {
if (*static_words_size < new_words_size &&
/* can't get more words memory */
return (0);
} else {
}
/*LINTED*/
l = (char **)*static_words;
s = l + number_of_words;
*static_dimming = (char *)(s + number_of_words);
w = *static_dimming + number_of_words;
for (i = 0; i < number_of_words; i++) {
*l = w;
if (*s_w == '\000') {
*s = NULL;
s_w++;
} else {
*s = w;
}
l++;
s++;
} /* for each word entry */
} /* if (full) */
return (1);
} /* build_strings */
/*
* bslcvtfull - Convert Sensitivity Label and initialize static
* information.
*
* Entry label = Sensitivity Label to convert and get dimming list.
* This label should lie within the bounds or the
* results may not be meaningful.
* bounds = Lower and upper bounds for words lists. Must be
* dominated by clearance.
*
* Exit string = ASCII coded Sensitivity Label.
* long_words = Array of pointers to visible long word names.
* short_words = Array of pointers to visible short word names.
* display = Array of indicators as to whether the word is present
* (CVT_DIM).
* first_compartment = Zero based index of first compartment.
*
* Returns -1, If unable to access label encodings database, or
* invalid label.
* 0, If unable to allocate static memory.
* 1, If successful.
*
* Calls RPC - LABELS_BSLCONVERT, STTBLEVEL, SETBSLABEL, TCLNT,
* build_strings, clnt_call, clnt_perror.
*
* Uses sbounds, slrcvt, slrcvtsize, slrdim, slrstring,
* slrstringsize.
*/
int
int *first_compartment, int *display_size)
{
int new_words_size;
int rval;
#ifdef DEBUG
#endif /* DEBUG */
return (-1);
return (-1);
} else {
return (-1);
}
/* release return buffer */
return (0);
}
/* save for bslcvt call */
/*LINTED*/
*long_words = (char **)slcvt;
/*LINTED*/
/* release return buffer */
return (1);
} /* bslcvtfull */
/*
* bslcvt - Convert Sensitivity Label and update dimming information.
*
* Entry label = Sensitivity Label to convert and get dimming list.
* This label should lie within the bounds of the
* corresponding bslcvtfull call or the results may
* not be meaningful.
*
* Exit string = ASCII coded Sensitivity Label.
* display = Array of indicators as to whether the word is present
* (CVT_DIM).
*
* Returns -1, If unable to access label encodings database, or
* invalid label.
* 0, If unable to allocate static memory.
* 1, If successful.
*
* Calls RPC - LABELS_BSLCONVERT, SETBLEVEL, SETBSLABEL, build_strings
* clnt_call, clnt_perror.
*
* Uses sbounds, slrdim, slrstring.
*/
int
{
int rval;
return (-1); /* conversion not initialized */
#ifdef DEBUG
#endif /* DEBUG */
return (-1);
return (-1);
} else {
return (-1);
}
/* release return buffer */
return (0);
}
/* release return buffer */
return (1);
} /* bslcvt */
/*
* bclearcvtfull - Convert Clearance and initialize static information.
*
* Entry clearance = Clearance to convert and get dimming list.
* This clearance should lie within the bounds or
* the results may not be meaningful.
* bounds = Lower and upper bounds for words lists. Must be
* dominated by clearance.
*
* Exit string = ASCII coded Clearance.
* long_words = Array of pointers to visible long word names.
* short_words = Array of pointers to visible short word names.
* display = Array of indicators as to whether the word is present
* (CVT_DIM).
* first_compartment = Zero based index of first compartment.
*
* Returns -1, If unable to access label encodings database, or
* invalid label.
* 0, If unable to allocate static memory.
* 1, If successful.
*
* Calls RPC - LABELS_BCLEARCONVERT, SETBCLEAR, SETBLEVEL, TCLNT,
* build_strings, clnt_call, clnt_perror.
*
* Uses cbounds, clrcvt, clrcvtsize, clrdim, clrstring,
* clrstringsize.
*/
int
{
int new_words_size;
int rval;
#ifdef DEBUG
#endif /* DEBUG */
return (-1);
return (-1);
} else {
return (-1);
}
/* release return buffer */
return (0);
}
/* save for bclearcvt call */
/*LINTED*/
*long_words = (char **)clrcvt;
/*LINTED*/
/* release return buffer */
return (1);
} /* bclearcvtfull */
/*
* bclearcvt - Convert Clearance and update dimming inforamtion.
*
* Entry clearance = Clearance to convert and get dimming list.
* This clearance should lie within the bounds of the
* corresponding bclearcvtfull call or the results may
* not be meaningful.
*
* Exit string = ASCII coded Clearance.
* display = Array of indicators as to whether the word is present
* (CVT_DIM).
*
* Returns -1, If unable to access label encodings database, or
* invalid label.
* 0, If unable to allocate static memory.
* 1, If successful.
*
* Calls RPC - LABELS_BCLEARCONVERT, SETBCLEAR, SETBLEVEL, build_strings,
* clnt_call, clnt_perror.
*
* Uses cbounds, clrdim, clrstring.
*/
int
char *display[])
{
int rval;
return (-1); /* conversion not initialized */
#ifdef DEBUG
#endif /* DEBUG */
return (-1);
return (-1);
} else {
return (-1);
}
/* release return buffer */
return (0);
}
/* release return buffer */
return (1);
} /* bclearcvt */
/*
* labelfields - Return names for the label fields.
*
* Entry None
*
* Exit fields = Updated.
*
* Returns -1, If unable to access label encodings file, or
* labels server failure.
* 0, If unable to allocate memory.
* 1, If successful.
*
* Calls __call_labeld(LABELFIELDS).
*/
int
{
int rval;
/* release return buffer */
return (-1);
}
/* unpack results */
/* release return buffer */
return (0);
}
/* release return buffer */
return (0);
}
/* release return buffer */
return (0);
}
/* release return buffer */
return (rval);
} /* labelfields */
/*
*
* Entry None.
*
* Exit sl = default user Sensitivity Label.
* clear = default user Clearance.
*
* Returns -1, If unable to access label encodings file, or
* labels server failure.
* 1, If successful.
*
* Calls __call_labeld(UDEFS).
*/
int
{
int rval;
/* process error */
return (-1);
}
return (rval);
} /* userdefs */