UNIXworkcode

/******************************************************************************* * * * clearcase.c -- Nirvana Editor ClearCase support utilities * * * * Copyright (C) 2001 Mark Edel * * * * This is free software; you can redistribute it and/or modify it under the * * terms of the GNU General Public License as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any later * * version. In addition, you may distribute versions of this program linked to * * Motif or Open Motif. See README for details. * * * * This software is distributed in the hope that it will be useful, but WITHOUT * * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * * more details. * * * * You should have received a copy of the GNU General Public License along with * * software; if not, write to the Free Software Foundation, Inc., 59 Temple * * Place, Suite 330, Boston, MA 02111-1307 USA * * * * Nirvana Text Editor * * March, 2001 * * * * Written by Mark Edel * * * *******************************************************************************/ #ifdef HAVE_CONFIG_H #include "../config.h" #endif #include "clearcase.h" #include "nedit_malloc.h" #include <string.h> #include <stdlib.h> #include <X11/Intrinsic.h> #ifdef HAVE_DEBUG_H #include "../debug.h" #endif static int ClearCaseViewTagFound = 0; static char *ClearCaseViewRoot = NULL; static const char *ClearCaseViewTag = NULL; const char* GetClearCaseVersionExtendedPath(const char* fullname) { return(strstr(fullname, "@@/")); } /* ** Return a string showing the ClearCase view tag. If ClearCase is not in ** use, or a view is not set, NULL is returned. ** ** If user has ClearCase and is in a view, CLEARCASE_ROOT will be set and ** the view tag can be extracted. This check is safe and efficient enough ** that it doesn't impact non-clearcase users, so it is not conditionally ** compiled. (Thanks to Max Vohlken) */ const char *GetClearCaseViewTag(void) { if (!ClearCaseViewTagFound) { /* Extract the view name from the CLEARCASE_ROOT environment variable */ const char *envPtr = getenv("CLEARCASE_ROOT"); if (envPtr != NULL) { const char *tagPtr; ClearCaseViewRoot = NEditStrdup(envPtr); tagPtr = strrchr(ClearCaseViewRoot, '/'); if (tagPtr != NULL) { ClearCaseViewTag = ++tagPtr; } } } /* If we don't find it first time, we will never find it, so may just as * well say that we have found it. */ ClearCaseViewTagFound = 1; return(ClearCaseViewTag); }