Skip to content

Commit 364bc1f

Browse files
committed
Removes StrNCpyFromLispToC(), renames StrNCpyFromCToLisp to MemCpyToLispFromNative
Removes StrNCpyFromLispToC and the single use of it in LispStringToCString in the BYTESWAP implementation case. Rename StrNCpyFromCToLisp, which does NOT follow "strncpy" semantics, to be MemCpyToLispFromNative, where the types in the name match the types of the arguments, and the semantics (and argument order) are those of the C library "memcpy".
1 parent 428e7cf commit 364bc1f

File tree

5 files changed

+25
-24
lines changed

5 files changed

+25
-24
lines changed

inc/locfile.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,17 @@
4444
/* For getfileinfo. For WDATE&RDATE */
4545
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
4646

47-
#define StrNCpyFromCToLisp(lispbuf, cbuf ,len) do { \
48-
char *lf_sptr = (cbuf); \
49-
char *lf_dptr = (lispbuf); \
50-
for(size_t lf_i=0;lf_i<(len);lf_i++)\
51-
GETBYTE(lf_dptr++) = *lf_sptr++; \
52-
} while (0)
53-
54-
#define StrNCpyFromLispToC(cbuf , lispbuf, len) do { \
55-
char *lf_sptr = (lispbuf); \
56-
char *lf_dptr = (cbuf); \
57-
for(size_t lf_i=0;lf_i<(len);lf_i++)\
58-
*lf_dptr++ = GETBYTE(lf_sptr++); \
47+
/*
48+
* Copy memory between native memory locations accounting for potential
49+
* byte-swapping necessary when then destination is within Lisp memory space
50+
* though the provided destination pointer is a native address within the
51+
* Lisp space.
52+
*/
53+
#define MemCpyToLispFromNative(lispbuf, cbuf, len) \
54+
do { \
55+
char *lf_sptr = (cbuf); \
56+
char *lf_dptr = (lispbuf); \
57+
for (size_t lf_i = 0; lf_i < (len); lf_i++) *BYTEPTR(lf_dptr++) = *lf_sptr++; \
5958
} while (0)
6059

6160
#define FGetNum(ptr, place) do { \
@@ -122,8 +121,10 @@
122121
case THIN_CHAR_TYPENUMBER: \
123122
lf_base = ((char *)(NativeAligned2FromLAddr(lf_arrayp->base))) \
124123
+ ((int)(lf_arrayp->offset)); \
125-
StrNCpyFromLispToC(C , lf_base , lf_length ); \
126-
(C)[lf_length] = '\0'; \
124+
lf_dp = C; \
125+
for (size_t lf_i = 0; lf_i < lf_length; lf_i++) \
126+
*lf_dp++ = GETBYTE(lf_base++); \
127+
*lf_dp = '\0'; \
127128
break; \
128129
\
129130
case FAT_CHAR_TYPENUMBER: \

src/dir.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2159,7 +2159,7 @@ LispPTR COM_next_file(LispPTR *args)
21592159
#ifndef BYTESWAP
21602160
strncpy(base, fp->lname, fp->lname_len);
21612161
#else
2162-
StrNCpyFromCToLisp(base, fp->lname, fp->lname_len);
2162+
MemCpyToLispFromNative(base, fp->lname, fp->lname_len);
21632163
#endif /* BYTESWAP */
21642164

21652165
if (!propp) return (GetPosSmallp(fp->lname_len));
@@ -2175,7 +2175,7 @@ LispPTR COM_next_file(LispPTR *args)
21752175
#ifndef BYTESWAP
21762176
strncpy(base, pp->author, pp->au_len);
21772177
#else
2178-
StrNCpyFromCToLisp(base, pp->author, pp->au_len);
2178+
MemCpyToLispFromNative(base, pp->author, pp->au_len);
21792179
#endif /* BYTESWAP */
21802180

21812181
gfsp->aulen = pp->au_len;

src/dsk.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,7 @@ LispPTR DSK_getfilename(LispPTR *args)
10341034
#ifndef BYTESWAP
10351035
strncpy(base, lfname, len + 1);
10361036
#else
1037-
StrNCpyFromCToLisp(base, lfname, len + 1);
1037+
MemCpyToLispFromNative(base, lfname, len + 1);
10381038
#endif /* BYTESWAP */
10391039

10401040
return (GetPosSmallp(len));
@@ -1070,7 +1070,7 @@ LispPTR DSK_getfilename(LispPTR *args)
10701070
#ifndef BYTESWAP
10711071
strncpy(base, lfname, len + 1);
10721072
#else
1073-
StrNCpyFromCToLisp(base, lfname, len + 1);
1073+
MemCpyToLispFromNative(base, lfname, len + 1);
10741074
#endif /* BYTESWAP */
10751075

10761076
return (GetPosSmallp(len));
@@ -1509,7 +1509,7 @@ LispPTR DSK_directorynamep(LispPTR *args)
15091509
#ifndef BYTESWAP
15101510
strncpy(base, dirname, len + 1);
15111511
#else
1512-
StrNCpyFromCToLisp(base, dirname, len + 1);
1512+
MemCpyToLispFromNative(base, dirname, len + 1);
15131513
#endif /* BYTESWAP */
15141514

15151515
return (GetPosSmallp(len));
@@ -1671,7 +1671,7 @@ LispPTR COM_getfileinfo(LispPTR *args)
16711671
#ifndef BYTESWAP
16721672
strncpy(base, pwd->pw_name, len);
16731673
#else
1674-
StrNCpyFromCToLisp(base, pwd->pw_name, len);
1674+
MemCpyToLispFromNative(base, pwd->pw_name, len);
16751675
#endif /* BYTESWAP */
16761676
#endif /* DOS */
16771677
return (GetPosSmallp(len));
@@ -1710,7 +1710,7 @@ LispPTR COM_getfileinfo(LispPTR *args)
17101710
#ifndef BYTESWAP
17111711
strncpy(base, pwd->pw_name, len);
17121712
#else
1713-
StrNCpyFromCToLisp(base, pwd->pw_name, len);
1713+
MemCpyToLispFromNative(base, pwd->pw_name, len);
17141714
#endif /* BYTESWAP */
17151715
#endif /* DOS */
17161716
return (GetPosSmallp(len));

src/osmsg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ LispPTR mess_read(LispPTR *args)
283283
if (temp_buf[i] == '\n') temp_buf[i] = '\000';
284284
}
285285
/* COPY actual Lisp Buffer(for BYTESWAP magic) */
286-
StrNCpyFromCToLisp(base, temp_buf, size);
286+
MemCpyToLispFromNative(base, temp_buf, size);
287287

288288
return (GetSmallp(size));
289289
#else

src/ufs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ LispPTR UFS_getfilename(LispPTR *args)
218218
#ifndef BYTESWAP
219219
strncpy(base, lfname, len + 1);
220220
#else
221-
StrNCpyFromCToLisp(base, lfname, len + 1);
221+
MemCpyToLispFromNative(base, lfname, len + 1);
222222
#endif /* BYTESWAP */
223223

224224
return (GetSmallp(len));
@@ -422,7 +422,7 @@ LispPTR UFS_directorynamep(LispPTR *args)
422422
#ifndef BYTESWAP
423423
strncpy(base, dirname, len + 1);
424424
#else
425-
StrNCpyFromCToLisp(base, dirname, len + 1);
425+
MemCpyToLispFromNative(base, dirname, len + 1);
426426
#endif /* BYTESWAP */
427427

428428
return (GetSmallp(len));

0 commit comments

Comments
 (0)