Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XmtFindFile(3)		    Library Functions Manual		  XmtFindFile(3)

NAME
     XmtFindFile() - look for application auxiliary files.

SYNOPSIS
     String XmtFindFile(Widget w, String type, String objname, String suffix,
		    String rootdir, String path, int where)

ARGUMENTS
     INPUTS

	  w	 Any  widget  in the application; specifies which resource data-
		 base and application resources to use.

	  type	 The string that describes type of the file; substituted for  %T
		 in path. If you specify NULL, the empty string will be used.

	  objnameThe  base  name of the file; substituted for %N in path. If you
		 specify NULL, the application class name will be used.

	  suffix The suffix of the file; substituted for %S  in  path.	 If  you
		 specify NULL, the empty string will be used.

	  rootdirThe  name of a directory to search under; substituted for %R in
		 path. If you specify NULL, the configDir  application	resource
		 will be used.

	  path	 A  colon-separated  list  of  file  specifications to check, or
		 NULL.

	  where  Flags that specify whether XmtFindFile() should also search  in
		 standard user, application, and system paths.

     RETURNS

	  The  fully  qualified  name of a file that exists and is read able, or
	  NULL if no such file could be found. You must free this filename  with
	  XtFree() when done with it.

DESCRIPTION
     XmtFindFile() finds a fully qualified filename for an application auxiliary
     file  with  a specified base name, type, and suffix. Using XmtFindFile() to
     look up filenames is generally better than hardcoding those file  names  in
     an  applica  tion because it allows the system administrator flexibility in
     where she installs the auxiliary files for your application, and it  allows
     flexibility  at  run  time to read different files at run-time depending on
     the setting of the LANG environment variable, or the  standard  X11R5  cus-
     tomization application resource, for example.

     XmtFindFile()  is based on the Intrinsics function XtResolve Pathname() but
     extends it in a couple of important ways. It works by performing a standard
     set of string substitutions (described below) on each  of	the  colon-sepa-
     rated elements of path in turn. Once the substitution is done, it checks to
     see  if  the  resulting string names a file that exists and is readable. If
     so, it returns that filename.

     Note that XmtFindFile() returns filenames in allocated memory that must  be
     freed  with  XtFree() when you are done with it.  Also note that if objname
     begins with ``/'', ``./'', or ``../'', then XmtFindFile() assumes	that  it
     is  already  a  fully qualified (absolute or relative) filename, and simply
     returns a copy of that name without conducting a search.

     The substitutions performed by XmtFindFile(), and the  paths  that  it  can
     search are described in the sections below.

     Substitutions

     XmtFindFile() performs the following substitutions on any path it searches.
     %R,  %H,  %a, %A, %v, %z, and %d are added by XmtFindFile(); the other sub-
     stitutions are standard ones supported by XtResolvePathname().

     %R     The ``root directory'' of the search.  This  is  replaced  with  the
	    value of the rootdir argument, or if that is NULL, with the value of
	    the  XmtNconfigDir	application  resource. When searching the ``user
	    path'' (as described below), however, %R is replaced with the user's
	    home directory, or with the value  of  the	XAPPLRESDIR  environment
	    variable.

     %H     The  user's  home  directory.  This substitution can be use ful when
	    looking for configuration files that are  always  installed  in  the
	    user's home directory. You could use a path like ``%H/.%a'', for ex-
	    ample,  to	find  the  ``dot file'' for an application. Note that it
	    generally does not make sense to use both %R and %H in the same ele-
	    ment of a path.

     %a     The application name, as reported by XtGetApplicationNameAndClass().

     %A     The application class name, as reported by	XtGetApplicationNameAnd-
	    Class().

     %v     The  visual  type  of the screen. This substitution is replaced with
	    one of the strings ``color'' (for color  screens)  ,  ``gray''  (for
	    grayscale screens) and ``monochrome'' (for monochrome screens).

     %z     The  approximate  size or resolution of the screen, as determined by
	    its absolute number of pixels, not	by  screen  size  in  inches  or
	    screen  resolution	in dots-per-inch.  This substitution will be re-
	    placed by one of the strings ``small'', ``medium'' or ``large''.

     %d     The depth of the screen in bitplanes. Typical values for  this  sub-
	    stitution  are  ``1''  (for  monochrome screens), and ``8'' (for the
	    common variety of 256-color screens).

     %T     The value of the type argument. This  is  the  general  category  of
	    file,  such as ``app-defaults'', ``bitmap'', or ``help''. If type is
	    NULL, then the empty string is used.

     %N     The value of the objname argument, or the application's  class  name
	    if objname is NULL.

     %S     The value of the suffix argument. This will generally be some suffix
	    that  identifies the type of the file, such as ``.xbm'' for a bitmap
	    file or ``.ad'' for an app-defaults file. Note that files are  often
	    installed  without	a  suffix  when  they  are  in directories (like
	    /usr/lib/X11/app-defaults) that identify the file type.  You  should
	    generally  supply a suffix argument to XmtFindFile(), but some paths
	    will never contain the %S substitution. If suffix is not  specified,
	    then %S will be replaced with the empty string.

     %C     The  value	of  the customization application resource. The user may
	    set this resource to a value such as  ``-color''  to  indicate  that
	    files  (resource  files,  bitmaps,	etc.)	appropriate  for a color
	    screen should be found, or to ``-mono'' if they are  using	a  mono-
	    chrome  screen.  If this resource is not specified, the empty string
	    is used for the substitution. This substitution is performed only in
	    X11R5 and later releases.

     %L     The value of the language string associated with the display.   This
	    is	the  value  of the xnlLanguage resource in Release 4, and in Re-
	    lease 5 and later, it is the value of this resource or the value re-
	    turned by the language procedure, if any is registered. (See  XtSet-
	    LanguageProc()  for  more information.) In Release 5, if the xnlLan-
	    guage resource is not set, the language procedure will  usually  re-
	    turn the value of the LANG environment variable. The %L substitution
	    in a path allows an application to automatically find international-
	    ized  versions  of its resources, online help files, pixmaps, and so
	    on.

     %l     The ``language part'' of the language string of the display.

     %t     The ``territory part'' of the language string of the display.

     %c     The ``codeset part'' of the language string of the display.

     Other Searches

     The where argument specifies where XmtFindFile() should look for the speci-
     fied file. It may be one of the following constants, or the bitwise  OR  of
     any of them.

     XmtSearchPathOnly
	    This is a symbolic name for the constant 0. When no flags are set in
	    the  where argument, XmtFindFile() searches only the specified path,
	    and not in any of the ``standard'' places. If you do not specify any
	    of the flags below, then you must specify an  explicit  path  to  be
	    searched.

     XmtSearchUserPath
	    This  flag specifies that XmtFindFile() should search the ``standard
	    user path'' before it searches anywhere else.  Note that this search
	    is performed before even the specified path is searched. Only  spec-
	    ify  this  flag if you want the user to be able to provide an alter-
	    nate to whatever file you are looking up.

	    The ``standard user path'' is specified by	the  XUSERFILESEARCHPATH
	    environment  variable,  or	if  that variable is not defined, by the
	    userConfigPath application resource, or if that resource is not  de-
	    fined,  the  XmtFindFile()	default path (which is specified below.)
	    When searching the user path, the %R substitution  is  not	replaced
	    with the rootdir argument or the configDir application resource. In-
	    stead,  %R is replaced with the XAPPLRESDIR environment variable, or
	    with the user's home directory.  Searching for user  files	in  this
	    way  is  consistent  with  what the Xt Intrinsics do when looking up
	    user app-defaults files for applications.

     XmtSearchAppPath
	    This flag specifies that XmtFindFile() should search the  ``standard
	    application  path''. The application path is searched after the user
	    path is searched, if XmtSearchUserPath is specified, and  after  the
	    specified path, if any, is searched.

	    The  standard application path is specified by the configPath appli-
	    cation resource. If this resource is not specified, a default  value
	    (described	below)	which is suitable for most applications is used.
	    For this search, the %R substitution is replaced by the value of the
	    rootdir argument, or if that is not specified, by the value  of  the
	    configDir  application  resource. The default value for configDir is
	    /usr/lib/X11, but it will often be set in an  app-defaults	file  to
	    something like /usr/local/lib or /usr/X11R5/lib.

	    This  ``standard  application  path'' is usually suitable for almost
	    all auxiliary files that an application must read, so you may  often
	    call  XmtFindFile()  with no rootdir argument, no path argument, and
	    where set to XmtSearchAppPath.

     XmtSearchSysPath
	    This flag specifies that XmtFindFile() should search the  ``standard
	    system  path''.  This  search  is only done if any previous searches
	    through the user path, the specified path, and the application  path
	    failed.

	    The  ``standard  application  path''  is defined to be the path that
	    XtResolvePathname() searches when no path is specified to  it.  This
	    is the value of the XFILESEARCHPATH environment variable, or if that
	    is	not  defined, the default XtResolvePathname() path. This default
	    path  is  implementation-dependent,  but   it   is	 usually   under
	    /usr/lib/X11. This is the path that the Xt Intrinsics use to find an
	    application's  app-defaults  file.	See XtResolvePathname() for more
	    information on this default system path.

	    For the search of the system path, none of the special XmtFindFile()
	    substitutions are performed: %R, %H, %a, %A, %v, %z, or %d. Also, if
	    a suffix argument was supplied, and  the  search  failed,  then  the
	    search  is performed again, without the suffix. This is done because
	    the default Xt ResolvePathname() path generally includes the %S sub-
	    stitution, but convention seems to be to install files in the system
	    directories without suffixes. (This is at least the case for app-de-
	    faults file in /usr/lib/X11/app-defaults.)

     XmtSearchEverywhere
	    This constant is just the bitwise-OR of each of the other constants;
	    it is shorthand to tell XmtFindFile() to search every place it knows
	    how. You can OR together any combination of  the  XmtSearchUserPath,
	    XmtSearchAppPath, and XmtSearchSysPath for the where argument.

     The Default Path

     When  searching  the user path, XmtFindFile() checks the userConfigPath ap-
     plication resource, and when searching the application path,  it  uses  the
     configPath  application  resource.  The default value for each of these re-
     sources is the following path:

	  %R/%L/%a/%N%C%S:
	  %R/%L/%a/%N%S:
	  %R/%l/%a/%N%C%S:
	  %R/%l/%a/%N%S:
	  %R/%a/%N%C%S:
	  %R/%a/%N%S:
	  %R/%N%C%S: %R/%N%S

     Debugging

     If you set the XMTDEBUGFINDFILE environment  variable,  then  XmtFindFile()
     will  print the name of every file it checks for. This can be quite helpful
     when trying to get your application to correctly look for its configuration
     files.  Compile the Xmt library with the -NDEBUG flag to disable  this  de-
     bugging feature.

SEE ALSO
     Chapter 6, Managing Auxiliary Files,
     Chapter 7, Application Resources and Command-Line Arguments,
     XtResolvePathname(), XtFindFile().

Xmt				   Motif Tools			  XmtFindFile(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=XmtFindFile&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help