/*
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/


/*
 * convert to a windows path.  required because PIPS
 * is mostly posix but uses Windows paths and tcl uses unix paths internally (see FsJoinPath())
 *
 * inspired by TclWinNoBackslash()
 *
 * July 30, 2007
 */

#include "convertPathSlashes.h"
  
/**  
 * Switch the separator chars inside a given string. both pointers can point
 *   to the same string or different strings.
 *
 * @param direction  direction to convert to.
 * @param pTo        pointer of string to be converted.
 * @param pFrom      pointer to string to be converted from.
 *
 * @return   pTo        pointer to last char+1 of converted buffer.
 */
char* tclSymbianPathSlashConversion(direction, pTo, pFrom)
	PathConversionDirection direction;   // TO_TCL - '\\' to '/', TO_SYMBIAN - '/' to '\\'
	char *pTo;       // string to be converted.
	const char *pFrom;     // string to be converted.
{
	char  toChar;
	char  fromChar;
	
	if (direction == TO_TCL) {
		fromChar = '\\';
		toChar = '/';
	}
	else {        // TO_SYMBIAN
		fromChar = '/';
		toChar = '\\';		
	}
	
   	for (; *pFrom != '\0'; pTo++, pFrom++) {
		if (*pFrom == fromChar) {
    		*pTo = toChar;
		}		
		else {
			*pTo = *pFrom;	
		}
	}//for
		
	return pTo;	
}

/**  
 * Copies the source path to the destination path and null 
 *   terminates the destination string.
 *
 * @param direction  direction to convert to.
 * @param pTo        pointer of string to be converted.
 * @param pFrom      pointer to string to be converted from.
 */
// copy from fromStrPtr into a buffer supplied by toStrPtr.
void tclCopySymbianPathSlashConversion(direction, toStrPtr, fromStrPtr)
	PathConversionDirection direction;   // TO_TCL - '\\' to '/', TO_SYMBIAN - '/' to '\\'
	char *toStrPtr;    // string to be converted.
	const char *fromStrPtr;// string to convert from.
{
	char* pTo;
	const char* pFrom;

	
	pTo = toStrPtr;
	pFrom = fromStrPtr;
	pTo = tclSymbianPathSlashConversion(direction, pTo, pFrom);
	*pTo = '\0';		
}

