Skip to content

Commit 828c3d7

Browse files
committed
patch 8.1.0084: user name completion does not work on MS-Windows
Problem: User name completion does not work on MS-Windows. Solution: Use NetUserEnum() to get user names. (Yasuhiro Matsumoto)
1 parent 8516071 commit 828c3d7

5 files changed

Lines changed: 33 additions & 4 deletions

File tree

src/Make_cyg_ming.mak

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,7 @@ endif
662662
CFLAGS += -s
663663
endif
664664

665-
LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
665+
LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lnetapi32 -lversion
666666
GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
667667
CUIOBJ = $(OUTDIR)/iscygpty.o
668668
OBJ = \

src/Make_ivc.mak

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ LINK32=link.exe
8888
CPP_PROJ= /nologo /MT /W3 /GX /I ".\proto" /D "WIN32" /c
8989
# ADD CPP /nologo /MT /W3 /GX /I ".\proto" /D "WIN32" /c
9090

91-
LINK32_FLAGS= oldnames.lib kernel32.lib user32.lib gdi32.lib version.lib comdlg32.lib comctl32.lib advapi32.lib shell32.lib ole32.lib uuid.lib /nologo /machine:I386 /nodefaultlib
91+
LINK32_FLAGS= oldnames.lib kernel32.lib user32.lib gdi32.lib version.lib comdlg32.lib comctl32.lib advapi32.lib shell32.lib ole32.lib netapi32.lib uuid.lib /nologo /machine:I386 /nodefaultlib
9292
# ADD LINK32 oldnames.lib kernel32.lib user32.lib gdi32.lib version.lib comdlg32.lib comctl32.lib advapi32.lib shell32.lib ole32.lib uuid.lib /nologo /machine:I386 /nodefaultlib
9393
# SUBTRACT LINK32 /incremental:yes
9494

src/Make_mvc.mak

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,10 +489,11 @@ NETBEANS_LIB = WSock32.lib
489489

490490
# need advapi32.lib for GetUserName()
491491
# need shell32.lib for ExtractIcon()
492+
# need netapi32.lib for NetUserEnum()
492493
# gdi32.lib and comdlg32.lib for printing support
493494
# ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
494495
CON_LIB = oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib \
495-
comdlg32.lib ole32.lib uuid.lib /machine:$(CPU)
496+
comdlg32.lib ole32.lib netapi32.lib uuid.lib /machine:$(CPU)
496497
!if "$(DELAYLOAD)" == "yes"
497498
CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
498499
!endif
@@ -801,7 +802,7 @@ GUI_OBJ = \
801802
$(OUTDIR)\os_w32exe.obj
802803
GUI_LIB = \
803804
gdi32.lib version.lib $(IME_LIB) \
804-
winspool.lib comctl32.lib advapi32.lib shell32.lib \
805+
winspool.lib comctl32.lib advapi32.lib shell32.lib netapi32.lib \
805806
/machine:$(CPU)
806807
!else
807808
SUBSYSTEM = console

src/misc1.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
#include "vim.h"
1515
#include "version.h"
1616

17+
#if defined(FEAT_CMDL_COMPL) && defined(WIN3264)
18+
# include <lm.h>
19+
#endif
20+
1721
static char_u *vim_version_dir(char_u *vimdir);
1822
static char_u *remove_tail(char_u *p, char_u *pend, char_u *name);
1923
#if defined(FEAT_CMDL_COMPL)
@@ -4603,6 +4607,28 @@ init_users(void)
46034607
}
46044608
endpwent();
46054609
}
4610+
# elif defined(WIN3264)
4611+
{
4612+
char_u* user;
4613+
DWORD nusers = 0, ntotal = 0, i;
4614+
PUSER_INFO_0 uinfo;
4615+
4616+
if (NetUserEnum(NULL, 0, 0, (LPBYTE *) &uinfo, MAX_PREFERRED_LENGTH,
4617+
&nusers, &ntotal, NULL) == NERR_Success)
4618+
{
4619+
for (i = 0; i < nusers; i++)
4620+
{
4621+
if (ga_grow(&ga_users, 1) == FAIL)
4622+
break;
4623+
user = utf16_to_enc(uinfo[i].usri0_name, NULL);
4624+
if (user == NULL)
4625+
break;
4626+
((char_u **)(ga_users.ga_data))[ga_users.ga_len++] = user;
4627+
}
4628+
4629+
NetApiBufferFree(uinfo);
4630+
}
4631+
}
46064632
# endif
46074633
}
46084634

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,8 @@ static char *(features[]) =
761761

762762
static int included_patches[] =
763763
{ /* Add new patch number below this line */
764+
/**/
765+
84,
764766
/**/
765767
83,
766768
/**/

0 commit comments

Comments
 (0)