  FUNCTION [INLINE, UNSAFE] clf#make_file_value
    (    file: fst$file_reference;
     VAR work_area: ^clt$work_area): ^clt$data_value;

?? PUSH (LISTEXT := ON) ??

    VAR
      data_value: ^clt$data_value,
      size: fst$path_size,
      space: char;

    NEXT data_value IN work_area;
    IF data_value <> NIL THEN
      data_value^.kind := clc$file;
      size := STRLENGTH (file);
      space := ' ';  {CYBIL generates better code.
      WHILE (size > 0) AND (file (size) = space) DO
        size := size - 1;
      WHILEND;
      NEXT data_value^.file_value: [size] IN work_area;
      IF data_value^.file_value <> NIL THEN
        data_value^.file_value^ (1, size) := file (1, size);
      ELSE
        RESET work_area TO data_value;
        data_value := NIL;
      IFEND;
    IFEND;

    clf#make_file_value := data_value;

  FUNCEND clf#make_file_value;

*copyc clt$data_value
*copyc clt$work_area
*copyc fst$file_reference
*copyc fst$path_size
?? POP ??

