OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [start/] [insight/] [libgui/] [src/] [tclwinpath.c] - Rev 1780

Go to most recent revision | Compare with Previous | Blame | View Log

/* tclwinpath.c -- Tcl routines to convert paths under cygwin32.
   Copyright (C) 1997 Cygnus Solutions.
   Written by Ian Lance Taylor <ian@cygnus.com>.
 
   This file contains Tcl interface routines to do path translation
   when using cygwin32.  */
 
#ifdef __CYGWIN32__
 
#include <windows.h>
 
#include <tcl.h>
 
#include "guitcl.h"
#include "subcommand.h"
 
/* The path conversion routines are not declared anywhere that I know
   of.  */
 
extern void cygwin32_conv_to_win32_path (const char *, char *);
extern void cygwin32_conv_to_full_win32_path (const char *, char *);
extern void cygwin32_conv_to_posix_path (const char *, char *);
extern void cygwin32_conv_to_full_posix_path (const char *, char *);
extern int cygwin32_posix_path_list_p (const char *);
extern int cygwin32_win32_to_posix_path_list_buf_size (const char *);
extern int cygwin32_posix_to_win32_path_list_buf_size (const char *);
extern void cygwin32_win32_to_posix_path_list (char *, char *);
extern void cygwin32_posix_to_win32_path_list (char *, char *);
extern void cygwin32_split_path (const char *, char *, char *);
 
/* This file declares a Tcl command with subcommands.
 
   Each of the following subcommands returns a string based on the
   PATH argument.  If PATH is already in the desired form, these
   commands just return it unchanged.
 
   ide_cygwin_path to_win32 PATH
       Return PATH converted to a win32 pathname.
 
   ide_cygwin_path to_full_win32 PATH
       Return PATH converted to an absolute win32 pathname.
 
   ide_cygwin_path to_posix PATH
       Return PATH converted to a POSIX pathname.
 
   ide_cygwin_path to_full_posix PATH
       Return PATH converted to an absolute POSIX pathname.
 
   The following subcommand returns a boolean value.
 
   ide_cygwin_path posix_path_list_p PATHLIST
       Return whether PATHLIST is a POSIX style path list.
 
   The following subcommands return strings.
 
   ide_cygwin_path posix_to_win32_path_list PATHLIST
       Return PATHLIST converted from POSIX style to win32 style.
 
   ide_cygwin_path win32_to_posix_path_list PATHLIST
       Return PATHLIST converted from win32 style to POSIX style.
 
   */
 
/* Handle ide_cygwin_path to_win32.  */
 
static int
path_to_win32 (ClientData cd, Tcl_Interp *interp, int argc, char **argv)
{
  char buf[MAX_PATH];
 
  cygwin32_conv_to_win32_path (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_VOLATILE);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path to_full_win32.  */
 
static int
path_to_full_win32 (ClientData cd, Tcl_Interp *interp, int argc, char **argv)
{
  char buf[MAX_PATH];
 
  cygwin32_conv_to_full_win32_path (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_VOLATILE);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path to_posix.  */
 
static int
path_to_posix (ClientData cd, Tcl_Interp *interp, int argc, char **argv)
{
  char buf[MAX_PATH];
 
  cygwin32_conv_to_posix_path (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_VOLATILE);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path to_full_posix.  */
 
static int
path_to_full_posix (ClientData cd, Tcl_Interp *interp, int argc, char **argv)
{
  char buf[MAX_PATH];
 
  cygwin32_conv_to_full_posix_path (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_VOLATILE);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path posix_path_list_p.  */
 
static int
path_posix_path_list_p (ClientData cd, Tcl_Interp *interp, int argc,
			char **argv)
{
  int ret;
 
  ret = cygwin32_posix_path_list_p (argv[2]);
  Tcl_ResetResult (interp);
  Tcl_SetBooleanObj (Tcl_GetObjResult (interp), ret);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path posix_to_win32_path_list.  */
 
static int
path_posix_to_win32_path_list (ClientData cd, Tcl_Interp *interp, int argc,
			       char **argv)
{
  int size;
  char *buf;
 
  size = cygwin32_posix_to_win32_path_list_buf_size (argv[2]);
  buf = Tcl_Alloc (size);
  cygwin32_posix_to_win32_path_list (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_DYNAMIC);
  return TCL_OK;
}
 
/* Handle ide_cygwin_path win32_to_posix_path_list.  */
 
static int
path_win32_to_posix_path_list (ClientData cd, Tcl_Interp *interp, int argc,
			       char **argv)
{
  int size;
  char *buf;
 
  size = cygwin32_win32_to_posix_path_list_buf_size (argv[2]);
  buf = Tcl_Alloc (size);
  cygwin32_win32_to_posix_path_list (argv[2], buf);
  Tcl_SetResult (interp, buf, TCL_DYNAMIC);
  return TCL_OK;
}
 
/* The subcommand table.  */
 
static const struct ide_subcommand_table path_commands[] =
{
  { "to_win32",		path_to_win32,		3, 3 },
  { "to_full_win32",	path_to_full_win32,	3, 3 },
  { "to_posix",		path_to_posix,		3, 3 },
  { "to_full_posix",	path_to_full_posix,	3, 3 },
  { "posix_path_list_p", path_posix_path_list_p, 3, 3 },
  { "posix_to_win32_path_list", path_posix_to_win32_path_list, 3, 3 },
  { "win32_to_posix_path_list", path_win32_to_posix_path_list, 3, 3 },
  { NULL, NULL, 0, 0}
};
 
/* Create the ide_cygwin_path command.  */
 
int
ide_create_cygwin_path_command (Tcl_Interp *interp)
{
  return ide_create_command_with_subcommands (interp, "ide_cygwin_path",
					      path_commands, NULL, NULL);
}
 
#endif /* __CYGWIN32__ */
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.