summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/bison/bison_2.3.bb26
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/0001-Include-fcntl.h-for-getting-loff_t-definition.patch41
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/alignment_hack.patch38
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/dosfstools-msdos_fs-types.patch37
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/fix_populated_dosfs_creation.patch489
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/include-linux-types.patch22
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/mkdosfs-bootcode.patch241
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/mkdosfs-dir.patch639
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/msdos_fat12_undefined.patch19
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools/nofat32_autoselect.patch27
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools_2.11.bb34
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/arm_backend.diff449
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/elf_additions.diff71
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/elf_begin.c-CVE-2014-9447-fix.patch37
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/elfutils-ar-c-fix-num-passed-to-memset.patch23
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/elfutils-fsize.patch39
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/fix-build-gcc-4.8.patch57
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch73
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/gcc6.patch23
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/hppa_backend.diff801
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/i386_dis.h1657
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/m68k_backend.diff309
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/mips_backend.diff713
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/nm-Fix-size-passed-to-snprintf-for-invalid-sh_name-case.patch27
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/redhat-portability.diff756
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/redhat-robustify.diff1709
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/remove-unused.patch154
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/testsuite-ignore-elflint.diff21
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/uclibc-support-for-elfutils-0.148.patch91
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.148/x86_64_dis.h1632
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.148.bb91
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.9.inc13
-rw-r--r--meta/recipes-devtools/m4/m4/fix_for_circular_dependency.patch77
-rw-r--r--meta/recipes-devtools/m4/m4_1.4.9.bb3
-rw-r--r--meta/recipes-devtools/make/make-3.81/make_fix_for_automake-1.12.patch43
-rw-r--r--meta/recipes-devtools/make/make-3.81/makeinfo.patch22
-rw-r--r--meta/recipes-devtools/make/make_3.81.bb15
-rw-r--r--meta/recipes-devtools/mtools/mtools/fix-broken-lz.patch23
-rw-r--r--meta/recipes-devtools/mtools/mtools/mtools.patch129
-rw-r--r--meta/recipes-devtools/mtools/mtools/no-x11.patch21
-rw-r--r--meta/recipes-devtools/mtools/mtools_3.9.9.bb55
-rw-r--r--meta/recipes-devtools/patch/patch/debian.patch10426
-rw-r--r--meta/recipes-devtools/patch/patch/global-reject-file.diff203
-rw-r--r--meta/recipes-devtools/patch/patch/install.patch43
-rw-r--r--meta/recipes-devtools/patch/patch/unified-reject-files.diff307
-rw-r--r--meta/recipes-devtools/patch/patch_2.5.9.bb12
-rw-r--r--meta/recipes-devtools/rsync/rsync-2.6.9/rsync-2.6.9-fname-obo.patch71
-rw-r--r--meta/recipes-devtools/rsync/rsync-2.6.9/rsyncd.conf15
-rw-r--r--meta/recipes-devtools/rsync/rsync_2.6.9.bb15
49 files changed, 0 insertions, 21839 deletions
diff --git a/meta/recipes-devtools/bison/bison_2.3.bb b/meta/recipes-devtools/bison/bison_2.3.bb
deleted file mode 100644
index 182e8802b2..0000000000
--- a/meta/recipes-devtools/bison/bison_2.3.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "GNU Project parser generator (yacc replacement)"
-DESCRIPTION = "Bison is a general-purpose parser generator that converts an annotated context-free grammar into \
-an LALR(1) or GLR parser for that grammar. Bison is upward compatible with Yacc: all properly-written Yacc \
-grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with \
-little trouble."
-HOMEPAGE = "http://www.gnu.org/software/bison/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
-SECTION = "devel"
-DEPENDS = "bison-native flex-native"
-
-PR = "r1"
-
-SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.gz \
- file://bison-2.3_m4.patch"
-
-SRC_URI[md5sum] = "22327efdd5080e2b1acb6e560a04b43a"
-SRC_URI[sha256sum] = "52f78aa4761a74ceb7fdf770f3554dd84308c3b93c4255e3a5c17558ecda293e"
-
-inherit autotools gettext texinfo
-acpaths = "-I ${S}/m4"
-
-do_configure_prepend () {
- rm -f ${S}/m4/*gl.m4
- cp ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/runtime-po/
-}
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/0001-Include-fcntl.h-for-getting-loff_t-definition.patch b/meta/recipes-devtools/dosfstools/dosfstools/0001-Include-fcntl.h-for-getting-loff_t-definition.patch
deleted file mode 100644
index 06f5b7a960..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools/0001-Include-fcntl.h-for-getting-loff_t-definition.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From b7c42c6a9829bea911b22201edd7df2a9bec1a14 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 17:52:34 -0700
-Subject: [PATCH] Include fcntl.h for getting loff_t definition
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- dosfsck/dosfsck.h | 2 ++
- dosfsck/lfn.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/dosfsck/dosfsck.h b/dosfsck/dosfsck.h
-index d9314b1..2076d5f 100644
---- a/dosfsck/dosfsck.h
-+++ b/dosfsck/dosfsck.h
-@@ -50,6 +50,8 @@
- #define CT_LE_L(v) (v)
- #endif /* __BIG_ENDIAN */
-
-+#include <fcntl.h>
-+
- #define VFAT_LN_ATTR (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
-
- /* ++roman: Use own definition of boot sector structure -- the kernel headers'
-diff --git a/dosfsck/lfn.c b/dosfsck/lfn.c
-index 9b2cfc3..bb04fda 100644
---- a/dosfsck/lfn.c
-+++ b/dosfsck/lfn.c
-@@ -7,6 +7,7 @@
- #include <string.h>
- #include <limits.h>
- #include <time.h>
-+#include <fcntl.h>
-
- #include "common.h"
- #include "io.h"
---
-2.1.4
-
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/alignment_hack.patch b/meta/recipes-devtools/dosfstools/dosfstools/alignment_hack.patch
deleted file mode 100644
index b46b2db0a3..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools/alignment_hack.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-The problem is that unsigned char[2] is
-guranteed to be 8Bit aligned on arm
-but unsigned short is/needs to be 16bit aligned
-the union { unsigned short; unsigned char[2] } trick
-didn't work so no we use the alpha hack.
-
-memcpy into an 16bit aligned
-
- -zecke
-
-Upstream-Status: Inappropriate [licensing]
-We're tracking an old release of dosfstools due to licensing issues.
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
---- dosfstools/dosfsck/boot.c.orig 2003-05-15 19:32:23.000000000 +0200
-+++ dosfstools/dosfsck/boot.c 2003-06-13 17:44:25.000000000 +0200
-@@ -36,17 +36,15 @@
- { 0xff, "5.25\" 320k floppy 2s/40tr/8sec" },
- };
-
--#if defined __alpha || defined __ia64__ || defined __s390x__ || defined __x86_64__ || defined __ppc64__
-+
- /* Unaligned fields must first be copied byte-wise */
- #define GET_UNALIGNED_W(f) \
- ({ \
- unsigned short __v; \
- memcpy( &__v, &f, sizeof(__v) ); \
-- CF_LE_W( *(unsigned short *)&f ); \
-+ CF_LE_W( *(unsigned short *)&__v ); \
- })
--#else
--#define GET_UNALIGNED_W(f) CF_LE_W( *(unsigned short *)&f )
--#endif
-+
-
-
- static char *get_media_descr( unsigned char media )
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/dosfstools-msdos_fs-types.patch b/meta/recipes-devtools/dosfstools/dosfstools/dosfstools-msdos_fs-types.patch
deleted file mode 100644
index 35abd1a2b1..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools/dosfstools-msdos_fs-types.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Ensure the __s8 type is properly defined.
-
-Upstream-Status: Inappropriate [licensing]
-We're tracking an old release of dosfstools due to licensing issues.
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
---- dosfstools-2.10/dosfsck/dosfsck.h.org 2006-02-21 08:36:14.000000000 -0700
-+++ dosfstools-2.10/dosfsck/dosfsck.h 2006-02-21 08:40:12.000000000 -0700
-@@ -22,6 +22,14 @@
- #undef __KERNEL__
- #endif
-
-+#ifndef __s8
-+#include <asm/types.h>
-+#endif
-+
-+#ifndef __ASM_STUB_BYTEORDER_H__
-+#include <asm/byteorder.h>
-+#endif
-+
- #include <linux/msdos_fs.h>
-
- /* 2.1 kernels use le16_to_cpu() type functions for CF_LE_W & Co., but don't
---- dosfstools-2.10/dosfsck/file.c.org 2006-02-21 08:37:36.000000000 -0700
-+++ dosfstools-2.10/dosfsck/file.c 2006-02-21 08:37:47.000000000 -0700
-@@ -23,6 +23,10 @@
- #undef __KERNEL__
- #endif
-
-+#ifndef __s8
-+#include <asm/types.h>
-+#endif
-+
- #include <linux/msdos_fs.h>
-
- #include "common.h"
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/fix_populated_dosfs_creation.patch b/meta/recipes-devtools/dosfstools/dosfstools/fix_populated_dosfs_creation.patch
deleted file mode 100644
index 9d7f7321ac..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools/fix_populated_dosfs_creation.patch
+++ /dev/null
@@ -1,489 +0,0 @@
-Upstream-Status: Inappropriate
-
-This patch fixes populated dosfs image creation with directory
-structures. Earlier it was causing segfault; and only image
-population with no subdirectories was working.
-
-Issues fixed:
-1. (dir->count == dir->entries) check was only needed for root
- directory entries. And this check is wrong for non-root
- directories.
-2. For each dir entry 2 dir->table entries were needed, one for
- the file/dir and 2nd for long file name support. Earlier long
- name support was added for filenames but the 2nd entry
- allocation, initialization & counting was missed.
-3. The memory clearing was missed at the code path after dir->table
- memroy allocation.
-4. Add entries for . & .. directories in all non-root directories.
-5. The . directory points to the correct entry in fat now.
-6. All directoriy entries' size was not zero as required for dosfsck,
- Now all directory entries' size is zero.
-
-Enhancements:
-1. Added support for long names for directory names. This is same
- as the existing long name support for filenames.
-2. Added error messages for previously silent memory allocation and
- other errors.
-3. -d options does not work correctly with fat32, so now throwing
- an error for that.
-4. Use predefined structures from kernel's msdos_fs.h file, rather
- than defining again here. And accordingly change the names & use
- of structure variables.
-
-Outstanding Issues:
-1. The .. directory entry do not point to the parent of current
- directory. This issue can be fixed by running dosfsck -a after
- image creation.
-2. For files the filesize is correct, but the clusters size is more
- than it needs to be, this also can be fixed by running dosfsck -a
- after image creation.
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2011/12/13
-
-
-Index: dosfstools-2.11/mkdosfs/mkdosfs.c
-===================================================================
---- dosfstools-2.11.orig/mkdosfs/mkdosfs.c
-+++ dosfstools-2.11/mkdosfs/mkdosfs.c
-@@ -21,7 +21,17 @@
- June 2004 - Jordan Crouse (info.linux@amd.com)
- Added -d <directory> support to populate the image
- Copyright (C) 2004, Advanced Micro Devices, All Rights Reserved
--
-+
-+ 2011-12-13: Nitin A Kamble <nitin.a.kamble@intel.com>
-+ Enhanced the -d <directory> support for population of image while
-+ creation. Earlier subdirectores support was broken, only files in
-+ the rootdir were supported. Now directory hirarchy is supported.
-+ Also added long filename support to directory names.
-+ The -d <directory> option (image population while creation)
-+ is broken with fat32.
-+ Copyright (C) 2011, Intel Corporation, All Rights Reserved
-+
-+
- Fixes/additions May 1998 by Roman Hodek
- <Roman.Hodek@informatik.uni-erlangen.de>:
- - Atari format support
-@@ -86,23 +96,23 @@
- # undef __KERNEL__
- #endif
-
--#if __BYTE_ORDER == __BIG_ENDIAN
--
-+#ifndef __ASM_STUB_BYTEORDER_H__
- #include <asm/byteorder.h>
--#ifdef __le16_to_cpu
--/* ++roman: 2.1 kernel headers define these function, they're probably more
-- * efficient then coding the swaps machine-independently. */
--#define CF_LE_W __le16_to_cpu
--#define CF_LE_L __le32_to_cpu
--#define CT_LE_W __cpu_to_le16
--#define CT_LE_L __cpu_to_le32
--#else
--#define CF_LE_W(v) ((((v) & 0xff) << 8) | (((v) >> 8) & 0xff))
--#define CF_LE_L(v) (((unsigned)(v)>>24) | (((unsigned)(v)>>8)&0xff00) | \
-- (((unsigned)(v)<<8)&0xff0000) | ((unsigned)(v)<<24))
-+#endif
-+
-+#include <linux/msdos_fs.h>
-+
-+#undef CF_LE_W
-+#undef CF_LE_L
-+#undef CT_LE_W
-+#undef CT_LE_L
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+#include <byteswap.h>
-+#define CF_LE_W(v) bswap_16(v)
-+#define CF_LE_L(v) bswap_32(v)
- #define CT_LE_W(v) CF_LE_W(v)
- #define CT_LE_L(v) CF_LE_L(v)
--#endif /* defined(__le16_to_cpu) */
-
- #else
-
-@@ -253,33 +263,6 @@ struct fat32_fsinfo {
- __u32 reserved2[4];
- };
-
--/* This stores up to 13 chars of the name */
--
--struct msdos_dir_slot {
-- __u8 id; /* sequence number for slot */
-- __u8 name0_4[10]; /* first 5 characters in name */
-- __u8 attr; /* attribute byte */
-- __u8 reserved; /* always 0 */
-- __u8 alias_checksum; /* checksum for 8.3 alias */
-- __u8 name5_10[12]; /* 6 more characters in name */
-- __u16 start; /* starting cluster number, 0 in long slots */
-- __u8 name11_12[4]; /* last 2 characters in name */
--};
--
--struct msdos_dir_entry
-- {
-- char name[8], ext[3]; /* name and extension */
-- __u8 attr; /* attribute bits */
-- __u8 lcase; /* Case for base and extension */
-- __u8 ctime_ms; /* Creation time, milliseconds */
-- __u16 ctime; /* Creation time */
-- __u16 cdate; /* Creation date */
-- __u16 adate; /* Last access date */
-- __u16 starthi; /* high 16 bits of first cl. (FAT32) */
-- __u16 time, date, start; /* time, date and first cluster */
-- __u32 size; /* file size (in bytes) */
-- } __attribute__ ((packed));
--
- /* The "boot code" we put into the filesystem... it writes a message and
- tells the user to try again */
-
-@@ -356,7 +339,6 @@ static struct msdos_dir_entry *root_dir;
- static int size_root_dir; /* Size of the root directory in bytes */
- static int sectors_per_cluster = 0; /* Number of sectors per disk cluster */
- static int root_dir_entries = 0; /* Number of root directory entries */
--static int root_dir_num_entries = 0;
- static int last_cluster_written = 0;
-
- static char *blank_sector; /* Blank sector - all zeros */
-@@ -1315,7 +1297,7 @@ setup_tables (void)
- de->date = CT_LE_W((unsigned short)(ctime->tm_mday +
- ((ctime->tm_mon+1) << 5) +
- ((ctime->tm_year-80) << 9)));
-- de->ctime_ms = 0;
-+ de->ctime_cs = 0;
- de->ctime = de->time;
- de->cdate = de->date;
- de->adate = de->date;
-@@ -1451,16 +1433,23 @@ write_tables (void)
-
- /* Add a file to the specified directory entry, and also write it into the image */
-
--static void copy_filename(char *filename, char *base, char *ext) {
-+static void copy_filename(char *filename, char *dos_name) {
-
- char *ch = filename;
- int i, len;
-
-- memset(base, 0x20, 8);
-- memset(ext, 0x20, 3);
-+ if (!strcmp(filename, ".")) {
-+ strncpy(dos_name, MSDOS_DOT, MSDOS_NAME);
-+ return;
-+ }
-+ if (!strcmp(filename, "..")) {
-+ strncpy(dos_name, MSDOS_DOTDOT, MSDOS_NAME);
-+ return;
-+ }
-+ memset(dos_name, 0x20, MSDOS_NAME);
-
- for(len = 0 ; *ch && *ch != '.'; ch++) {
-- base[len++] = toupper(*ch);
-+ dos_name[len++] = toupper(*ch);
- if (len == 8) break;
- }
-
-@@ -1468,7 +1457,7 @@ static void copy_filename(char *filename
- if (*ch) ch++;
-
- for(len = 0 ; *ch; ch++) {
-- ext[len++] = toupper(*ch);
-+ dos_name[8 + len++] = toupper(*ch);
- if (len == 3) break;
- }
- }
-@@ -1551,7 +1540,7 @@ static int add_file(char *filename, stru
- int start;
- int usedsec, totalsec;
-
-- char name83[8], ext83[3];
-+ char dos_name[MSDOS_NAME+1];
-
- struct msdos_dir_slot *slot;
- int i;
-@@ -1562,23 +1551,22 @@ static int add_file(char *filename, stru
- if (dir->root) {
- if (dir->count == dir->entries) {
- printf("Error - too many directory entries\n");
-+ return;
- }
- }
- else {
-- if (dir->count == dir->entries) {
-- if (!dir->table)
-- dir->table =
-- (struct msdos_dir_entry *) malloc(sizeof(struct msdos_dir_entry));
-- else {
-- dir->table =
-- (struct msdos_dir_entry *) realloc(dir->table, (dir->entries + 1) *
-- sizeof(struct msdos_dir_entry));
--
-- memset(&dir->table[dir->entries], 0, sizeof(struct msdos_dir_entry));
-- }
--
-- dir->entries++;
-- }
-+ /* 2 entries, one extra for long filename */
-+ if (!dir->table)
-+ dir->table =
-+ (struct msdos_dir_entry *) malloc(2 * sizeof(struct msdos_dir_entry));
-+ else
-+ dir->table =
-+ (struct msdos_dir_entry *) realloc(dir->table, 2 * (dir->entries + 1) *
-+ sizeof(struct msdos_dir_entry));
-+ if (!dir->table)
-+ printf("Error - realloc failed\n");
-+ memset(&dir->table[dir->entries], 0, 2 * sizeof(struct msdos_dir_entry));
-+ dir->entries += 2;
- }
-
- infile = open(filename, O_RDONLY, 0);
-@@ -1611,13 +1599,13 @@ static int add_file(char *filename, stru
- return -1;
- }
-
-- printf("ADD %s\n", filename);
-+ printf("ADD FILE %s\n", filename);
-
- /* Grab the basename of the file */
- base = basename(filename);
-
-- /* Extract out the 8.3 name */
-- copy_filename(base, name83, ext83);
-+ /* convert for dos fat structure */
-+ copy_filename(base, dos_name);
-
- /* Make an extended name slot */
-
-@@ -1629,12 +1617,9 @@ static int add_file(char *filename, stru
-
- slot->alias_checksum = 0;
-
-- for(i = 0; i < 8; i++)
-- slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + name83[i];
-+ for(i = 0; i < MSDOS_NAME; i++)
-+ slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + dos_name[i];
-
-- for(i = 0; i < 3; i++)
-- slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + ext83[i];
--
- p = base;
-
- copy_name(slot->name0_4, 10, &p);
-@@ -1645,8 +1630,7 @@ static int add_file(char *filename, stru
- /* Get the entry from the root filesytem */
- entry = &dir->table[dir->count++];
-
-- strncpy(entry->name, name83, 8);
-- strncpy(entry->ext, ext83, 3);
-+ strncpy(entry->name, dos_name, MSDOS_NAME);
-
-
- /* If the user has it read only, then add read only to the incoming
-@@ -1665,7 +1649,7 @@ static int add_file(char *filename, stru
- ((ctime->tm_mon+1) << 5) +
- ((ctime->tm_year-80) << 9)));
-
-- entry->ctime_ms = 0;
-+ entry->ctime_cs = 0;
- entry->ctime = entry->time;
- entry->cdate = entry->date;
- entry->adate = entry->date;
-@@ -1711,6 +1695,7 @@ static int add_file(char *filename, stru
-
- exit_add:
- if (infile) close(infile);
-+ return 0;
- }
-
- /* Add a new directory to the specified directory entry, and in turn populate
-@@ -1727,10 +1712,18 @@ static void add_directory(char *filename
- struct dirent *dentry = 0;
- int remain;
- char *data;
-+ char *base;
-+ char dos_name[MSDOS_NAME+1];
-+ struct msdos_dir_slot *slot;
-+ int i;
-+ char *p;
-
- /* If the directory doesn't exist */
-- if (!rddir) return;
--
-+ if (!rddir) {
-+ printf("Error - dir does not exist: %s\n", filename);
-+ return;
-+ }
-+
- if (dir->root) {
- if (dir->count == dir->entries) {
- printf("Error - too many directory entries\n");
-@@ -1738,28 +1731,58 @@ static void add_directory(char *filename
- }
- }
- else {
-- if (dir->count == dir->entries) {
-- if (!dir->table)
-- dir->table = (struct msdos_dir_entry *) malloc(sizeof(struct msdos_dir_entry));
-- else {
-- dir->table = (struct msdos_dir_entry *) realloc(dir->table, (dir->entries + 1) *
-- sizeof(struct msdos_dir_entry));
--
-- /* Zero it out to avoid issues */
-- memset(&dir->table[dir->entries], 0, sizeof(struct msdos_dir_entry));
-- }
-- dir->entries++;
-+ /* 2 entries, one extra for long name of the directory */
-+ if (!dir->table)
-+ dir->table = (struct msdos_dir_entry *) malloc(2 * sizeof(struct msdos_dir_entry));
-+ else
-+ dir->table = (struct msdos_dir_entry *) realloc(dir->table, 2 * (dir->entries + 1) *
-+ sizeof(struct msdos_dir_entry));
-+ if (!dir->table) {
-+ printf("Error - memory allocation failed\n");
-+ goto exit_add_dir;
- }
-+ /* Zero it out to avoid issues */
-+ memset(&dir->table[dir->entries], 0, 2 * sizeof(struct msdos_dir_entry));
-+ dir->entries += 2;
- }
-
-+ printf("ADD DIR %s\n", filename);
- /* Now, create a new directory entry for the new directory */
- newdir = (struct dir_entry *) calloc(1, sizeof(struct dir_entry));
-- if (!newdir) goto exit_add_dir;
-+ if (!newdir) {
-+ printf("Error - calloc failed\n");
-+ goto exit_add_dir;
-+ }
-+
-+ /* Grab the basename of the file */
-+ base = basename(filename);
-+
-+ /* convert for dos structure */
-+ copy_filename(base, dos_name);
-+
-+ /* Make an extended name slot */
-+ slot = (struct msdos_dir_slot *) &dir->table[dir->count++];
-+ slot->id = 'A';
-+ slot->attr = 0x0F;
-+ slot->reserved = 0;
-+ slot->start = 0;
-+
-+ slot->alias_checksum = 0;
-
-+ for (i = 0; i < MSDOS_NAME; i++)
-+ slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + dos_name[i];
-+
-+ p = base;
-+
-+ copy_name(slot->name0_4, 10, &p);
-+ copy_name(slot->name5_10, 12, &p);
-+ copy_name(slot->name11_12, 4, &p);
-+
-+ /* Get the entry from the root filesytem */
- entry = &dir->table[dir->count++];
-
-- strncpy(entry->name, basename(filename), sizeof(entry->name));
--
-+ strncpy(entry->name, dos_name, MSDOS_NAME);
-+
- entry->attr = ATTR_DIR;
- ctime = localtime(&create_time);
-
-@@ -1770,25 +1793,32 @@ static void add_directory(char *filename
- ((ctime->tm_mon+1) << 5) +
- ((ctime->tm_year-80) << 9)));
-
-- entry->ctime_ms = 0;
-+ entry->ctime_cs = 0;
- entry->ctime = entry->time;
- entry->cdate = entry->date;
- entry->adate = entry->date;
-
- /* Now, read the directory */
-
-- while((dentry = readdir(rddir))) {
-+
-+ while((base[0] != '.') && (dentry = readdir(rddir))) {
- struct stat st;
- char *buffer;
--
-- if (!strcmp(dentry->d_name, ".") || !strcmp(dentry->d_name, ".."))
-- continue;
-
-- /* DOS wouldn't like a typical unix . (dot) file, so we skip those too */
-- if (dentry->d_name[0] == '.') continue;
-+ if (dentry->d_name[0] == '.') {
-+ /* dos also has . & .. directory entries */
-+ if (! ((!strcmp(dentry->d_name, ".")) || (!strcmp(dentry->d_name, "..")))) {
-+ /* ignore other .* files */
-+ printf("Error - File/Dir name is not dos compatible, ignored: %s\n", dentry->d_name);
-+ continue;
-+ }
-+ }
-
- buffer = malloc(strlen(filename) + strlen(dentry->d_name) + 3);
-- if (!buffer) continue;
-+ if (!buffer) {
-+ printf("Error - malloc failed\n");
-+ goto exit_add_dir;
-+ }
-
- sprintf(buffer, "%s/%s", filename, dentry->d_name);
- if (!stat(buffer, &st)) {
-@@ -1806,11 +1836,23 @@ static void add_directory(char *filename
- /* Now that the entire directory has been written, go ahead and write the directory
- entry as well */
-
-+ entry->size = 0; /* a directory has zero size */
-+
-+ if (base[0] == '.') { /* . & .. point to parent's cluster