source: trunk/kLdr/kLdrHlpPath.c@ 3232

Last change on this file since 3232 was 2944, checked in by bird, 19 years ago

split up kLdrHlp.c and kLdr.c to make it more flexible (like using the module interpreters without the dynamic loader bit and similar).

  • Property svn:keywords set to Id
File size: 3.8 KB
Line 
1/* $Id: kLdrHlpPath.c 2944 2007-01-13 15:55:40Z 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.