CMW Label Setting Demo.c was changed in Macintosh-specific ways. The changes were in no way related to the usage of the labeling subroutines.
In std_labels.c and l_init.c all uncast calls to calloc were cast to (char *).
In l_init.c (line 2862 of Release 2.1.1), sl_buffer was changed to cl_buffer.
In l_init.c (line 1456 of Release 2.1.1), added a cast of (unsigned int) to a subroutine argument. This cast would be required on some compilers/systems.
In l_init.c, added subroutine check_special_inverse. This subroutine is called by do_words to error check and set l_w_type flags for SPECIAL_INVERSE words.
In l_init.c, added the allocation of a new set of temporary variables to hold compartments/markings: l_t5_compartments, and l_t5_markings.
In l_init.c, changed subroutine check_inverse_words to check new l_w_type SPECIAL_COMPARTMENTS_INVERSE as appropriate.
In std_labels.c, in the subroutine word_forced_on, fixed check of comparison or normal compartment to the minimum compartments.
In std_labels.c, in the subroutine word_forced_on, added check to cause word_forced_on to ignore SPECIAL_INVERSE words.
In std_labels.c, in the subroutine l_parse, added support for SPECIAL_INVERSE words.
In std_labels.c, in the subroutine turnoff_word, added algorithms to deal with the special case of SPECIAL_INVERSE words. In particular, turnoff_word was made recursive.
In std_labels.c, in the subroutine turnon_word, added algorithms to deal with the special case of SPECIAL_INVERSE words.
In std_labels.c, in the subroutine l_valid, added support for SPECIAL_INVERSE words.