Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
10 years ago
Diff never expires
Clear
Export
Share
Explain
17 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
147 lines
Copy
43 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
167 lines
Copy
/*
/*
* Directory utility functions.
* Directory utility functions.
*
*
* Author:
* Author:
* Gonzalo Paniagua Javier (gonzalo@novell.com)
* Gonzalo Paniagua Javier (gonzalo@novell.com)
*
*
* (C) 2006 Novell, Inc.
* (C) 2006 Novell, Inc.
*
*
* Permission is hereby granted, free of charge, to any person obtaining
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
* the following conditions:
*
*
* The above copyright notice and this permission notice shall be
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
* included in all copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
*/
Copy
Copied
Copy
Copied
#include <glib.h>
#include <glib.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <errno.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <unistd.h>
#include <unistd.h>
Copy
Copied
Copy
Copied
#include <dirent.h>
//
#include <dirent.h>
#include <psp2/io/dirent.h>
#include <psp2/io/stat.h>
#define opendir sceIoDopen
#define closedir sceIoDclose
#define readdir sceIoDread
#define mkdir sceIoMkdir
#define DIR SceUID
#define dirent SceIoDirent
struct _GDir {
struct _GDir {
Copy
Copied
Copy
Copied
DIR
*
dir;
DIR
dir;
#ifndef HAVE_REWINDDIR
#ifndef HAVE_REWINDDIR
char *path;
char *path;
#endif
#endif
Copy
Copied
Copy
Copied
char current[256];
};
};
GDir *
GDir *
Copy
Copied
Copy
Copied
g_dir_open (const gchar *path, guint flags, GError **error)
g_dir_open (const gchar *path, guint flags, GError **error)
{
{
GDir *dir;
GDir *dir;
g_return_val_if_fail (path != NULL, NULL);
g_return_val_if_fail (path != NULL, NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
(void) flags; /* this is not used */
(void) flags; /* this is not used */
dir = g_new (GDir, 1);
dir = g_new (GDir, 1);
dir->dir = opendir (path);
dir->dir = opendir (path);
if (dir->dir
== NULL
) {
if (dir->dir
<0
) {
if (error) {
if (error) {
Copy
Copied
Copy
Copied
gint err =
errno
;
gint err =
dir->dir
;
*error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err));
*error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err));
}
}
g_free (dir);
g_free (dir);
return NULL;
return NULL;
}
}
#ifndef HAVE_REWINDDIR
#ifndef HAVE_REWINDDIR
dir->path = g_strdup (path);
dir->path = g_strdup (path);
#endif
#endif
Copy
Copied
Copy
Copied
return dir;
return dir;
Copy
Copied
Copy
Copied
}
}
const gchar *
const gchar *
g_dir_read_name (GDir *dir)
g_dir_read_name (GDir *dir)
{
{
Copy
Copied
Copy
Copied
struct
dirent
*
entry;
dirent
entry;
int r;
memset(&entry,0,sizeof(dirent));
g_return_val_if_fail (dir != NULL && dir->dir != NULL, NULL);
g_return_val_if_fail (dir != NULL && dir->dir != NULL, NULL);
do {
do {
Copy
Copied
Copy
Copied
entry
= readdir (dir->dir
);
r
= readdir (dir->dir
,&entry
);
if (
entry == NULL
)
if (
r<0
)
return NULL;
return NULL;
Copy
Copied
Copy
Copied
} while ((strcmp (entry
->
d_name, ".") == 0) || (strcmp (entry
->
d_name, "..") == 0));
} while ((strcmp (entry
.
d_name, ".") == 0) || (strcmp (entry
.
d_name, "..") == 0));
Copy
Copied
Copy
Copied
return
entry
->
d_name
;
strcpy(dir->current,
entry
.
d_name
);
return dir->current
;
}
}
void
void
g_dir_rewind (GDir *dir)
g_dir_rewind (GDir *dir)
{
{
g_return_if_fail (dir != NULL && dir->dir != NULL);
g_return_if_fail (dir != NULL && dir->dir != NULL);
#ifndef HAVE_REWINDDIR
#ifndef HAVE_REWINDDIR
closedir (dir->dir);
closedir (dir->dir);
dir->dir = opendir (dir->path);
dir->dir = opendir (dir->path);
#else
#else
rewinddir (dir->dir);
rewinddir (dir->dir);
#endif
#endif
}
}
void
void
g_dir_close (GDir *dir)
g_dir_close (GDir *dir)
{
{
g_return_if_fail (dir != NULL && dir->dir != 0);
g_return_if_fail (dir != NULL && dir->dir != 0);
closedir (dir->dir);
closedir (dir->dir);
#ifndef HAVE_REWINDDIR
#ifndef HAVE_REWINDDIR
g_free (dir->path);
g_free (dir->path);
#endif
#endif
dir->dir = NULL;
dir->dir = NULL;
g_free (dir);
g_free (dir);
}
}
int
int
g_mkdir_with_parents (const gchar *pathname, int mode)
g_mkdir_with_parents (const gchar *pathname, int mode)
{
{
char *path, *d;
char *path, *d;
int rv;
int rv;
if (!pathname || *pathname == '\0') {
if (!pathname || *pathname == '\0') {
errno = EINVAL;
errno = EINVAL;
return -1;
return -1;
}
}
d = path = g_strdup (pathname);
d = path = g_strdup (pathname);
if (*d == '/')
if (*d == '/')
d++;
d++;
while (TRUE) {
while (TRUE) {
if (*d == '/' || *d == '\0') {
if (*d == '/' || *d == '\0') {
char orig = *d;
char orig = *d;
*d = '\0';
*d = '\0';
rv = mkdir (path, mode);
rv = mkdir (path, mode);
if (rv == -1 && errno != EEXIST) {
if (rv == -1 && errno != EEXIST) {
g_free (path);
g_free (path);
return -1;
return -1;
}
}
*d++ = orig;
*d++ = orig;
while (orig == '/' && *d == '/')
while (orig == '/' && *d == '/')
d++;
d++;
if (orig == '\0')
if (orig == '\0')
break;
break;
} else {
} else {
d++;
d++;
}
}
}
}
g_free (path);
g_free (path);
return 0;
return 0;
}
}
Saved diffs
Original text
Open file
/* * Directory utility functions. * * Author: * Gonzalo Paniagua Javier (gonzalo@novell.com) * * (C) 2006 Novell, Inc. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include <glib.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <dirent.h> struct _GDir { DIR *dir; #ifndef HAVE_REWINDDIR char *path; #endif }; GDir * g_dir_open (const gchar *path, guint flags, GError **error) { GDir *dir; g_return_val_if_fail (path != NULL, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); (void) flags; /* this is not used */ dir = g_new (GDir, 1); dir->dir = opendir (path); if (dir->dir == NULL) { if (error) { gint err = errno; *error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err)); } g_free (dir); return NULL; } #ifndef HAVE_REWINDDIR dir->path = g_strdup (path); #endif return dir; } const gchar * g_dir_read_name (GDir *dir) { struct dirent *entry; g_return_val_if_fail (dir != NULL && dir->dir != NULL, NULL); do { entry = readdir (dir->dir); if (entry == NULL) return NULL; } while ((strcmp (entry->d_name, ".") == 0) || (strcmp (entry->d_name, "..") == 0)); return entry->d_name; } void g_dir_rewind (GDir *dir) { g_return_if_fail (dir != NULL && dir->dir != NULL); #ifndef HAVE_REWINDDIR closedir (dir->dir); dir->dir = opendir (dir->path); #else rewinddir (dir->dir); #endif } void g_dir_close (GDir *dir) { g_return_if_fail (dir != NULL && dir->dir != 0); closedir (dir->dir); #ifndef HAVE_REWINDDIR g_free (dir->path); #endif dir->dir = NULL; g_free (dir); } int g_mkdir_with_parents (const gchar *pathname, int mode) { char *path, *d; int rv; if (!pathname || *pathname == '\0') { errno = EINVAL; return -1; } d = path = g_strdup (pathname); if (*d == '/') d++; while (TRUE) { if (*d == '/' || *d == '\0') { char orig = *d; *d = '\0'; rv = mkdir (path, mode); if (rv == -1 && errno != EEXIST) { g_free (path); return -1; } *d++ = orig; while (orig == '/' && *d == '/') d++; if (orig == '\0') break; } else { d++; } } g_free (path); return 0; }
Changed text
Open file
/* * Directory utility functions. * * Author: * Gonzalo Paniagua Javier (gonzalo@novell.com) * * (C) 2006 Novell, Inc. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include <glib.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> //#include <dirent.h> #include <psp2/io/dirent.h> #include <psp2/io/stat.h> #define opendir sceIoDopen #define closedir sceIoDclose #define readdir sceIoDread #define mkdir sceIoMkdir #define DIR SceUID #define dirent SceIoDirent struct _GDir { DIR dir; #ifndef HAVE_REWINDDIR char *path; #endif char current[256]; }; GDir * g_dir_open (const gchar *path, guint flags, GError **error) { GDir *dir; g_return_val_if_fail (path != NULL, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); (void) flags; /* this is not used */ dir = g_new (GDir, 1); dir->dir = opendir (path); if (dir->dir <0) { if (error) { gint err = dir->dir; *error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err)); } g_free (dir); return NULL; } #ifndef HAVE_REWINDDIR dir->path = g_strdup (path); #endif return dir; } const gchar * g_dir_read_name (GDir *dir) { dirent entry; int r; memset(&entry,0,sizeof(dirent)); g_return_val_if_fail (dir != NULL && dir->dir != NULL, NULL); do { r = readdir (dir->dir,&entry); if (r<0) return NULL; } while ((strcmp (entry.d_name, ".") == 0) || (strcmp (entry.d_name, "..") == 0)); strcpy(dir->current,entry.d_name); return dir->current; } void g_dir_rewind (GDir *dir) { g_return_if_fail (dir != NULL && dir->dir != NULL); #ifndef HAVE_REWINDDIR closedir (dir->dir); dir->dir = opendir (dir->path); #else rewinddir (dir->dir); #endif } void g_dir_close (GDir *dir) { g_return_if_fail (dir != NULL && dir->dir != 0); closedir (dir->dir); #ifndef HAVE_REWINDDIR g_free (dir->path); #endif dir->dir = NULL; g_free (dir); } int g_mkdir_with_parents (const gchar *pathname, int mode) { char *path, *d; int rv; if (!pathname || *pathname == '\0') { errno = EINVAL; return -1; } d = path = g_strdup (pathname); if (*d == '/') d++; while (TRUE) { if (*d == '/' || *d == '\0') { char orig = *d; *d = '\0'; rv = mkdir (path, mode); if (rv == -1 && errno != EEXIST) { g_free (path); return -1; } *d++ = orig; while (orig == '/' && *d == '/') d++; if (orig == '\0') break; } else { d++; } } g_free (path); return 0; }
Find difference