source: trunk/kStuff/kLdr/kLdrHlpPath.c@ 3537

Last change on this file since 3537 was 3537, checked in by bird, 18 years ago

Moved k* into kStuff.

  • Property svn:keywords set to Id
File size: 3.8 KB
Line 
1/* $Id: kLdrHlpPath.c 3537 2007-08-23 00:39:06Z bird $ */
2/** @file
3 *
4 * kLdr - The Dynamic Loader, Path Helper Functions.
5 *
6 * Copyright (c) 2006-2007 knut st. osmundsen <bird-kbuild-src@anduin.net>
7 *
8 *
9 * This file is part of kLdr.
10 *
11 * kLdr is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * kLdr is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with kLdr; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 *
25 */
26
27
28/*******************************************************************************
29* Header Files *
30*******************************************************************************/
31#include <kLdr.h>
32#include "kLdrHlp.h"
33
34
35/**
36 * Get the pointer to the filename part of the name.
37 *
38 * @returns Pointer to where the filename starts within the string pointed to by pszFilename.
39 * @returns Pointer to the terminator char if no filename.
40 * @param pszFilename The filename to parse.
41 */
42char *kldrHlpGetFilename(const char *pszFilename)
43{
44 const char *pszLast = NULL;
45 for (;;)
46 {
47 char ch = *pszFilename;
48#if defined(__OS2__) || defined(__WIN__)
49 if (ch == '/' || ch == '\\' || ch == ':')
50 {
51 while ((ch = *++pszFilename) == '/' || ch == '\\' || ch == ':')
52 /* nothing */;
53 pszLast = pszFilename;
54 }
55#else
56 if (ch == '/')
57 {
58 while ((ch = *++pszFilename) == '/')
59 /* betsuni */;
60 pszLast = pszFilename;
61 }
62#endif
63 if (!ch)
64 return (char *)(pszLast ? pszLast : pszFilename);
65 pszFilename++;
66 }
67}
68
69
70/**
71 * Gets the filename suffix.
72 *
73 * @returns Pointer to where the suffix starts within the string pointed to by pszFilename.
74 * @returns Pointer to the terminator char if no suffix.
75 * @param pszFilename The filename to parse.
76 */
77char *kldrHlpGetSuff(const char *pszFilename)
78{
79 const char *pszDot = NULL;
80 pszFilename = kldrHlpGetFilename(pszFilename);
81 for (;;)
82 {
83 char ch = *pszFilename;
84 if (ch == '.')
85 {
86 while ((ch = *++pszFilename) == '.')
87 /* nothing */;
88 if (ch)
89 pszDot = pszFilename - 1;
90 }
91 if (!ch)
92 return (char *)(pszDot ? pszDot : pszFilename);
93 pszFilename++;
94 }
95}
96
97
98/**
99 * Gets the filename extention.
100 *
101 * @returns Pointer to where the extension starts within the string pointed to by pszFilename.
102 * @returns Pointer to the terminator char if no extension.
103 * @param pszFilename The filename to parse.
104 */
105char *kldrHlpGetExt(const char *pszFilename)
106{
107 char *psz = kldrHlpGetSuff(pszFilename);
108 return *psz ? psz + 1 : psz;
109}
110
111
112/**
113 * Checks if this is only a filename or if it contains any kind
114 * of drive, directory, or server specs.
115 *
116 * @returns 1 if this is a filename only.
117 * @returns 0 of it's isn't only a filename.
118 * @param pszFilename The filename to parse.
119 */
120int kldrHlpIsFilenameOnly(const char *pszFilename)
121{
122 for (;;)
123 {
124 const char ch = *pszFilename++;
125#if defined(__OS2__) || defined(__WIN__)
126 if (ch == '/' || ch == '\\' || ch == ':')
127#else
128 if (ch == '/')
129#endif
130 return 0;
131 if (!ch)
132 return 1;
133 }
134}
135
136
Note: See TracBrowser for help on using the repository browser.