annotate netinstall/mklink2.c @ 4465:732b87cfabf2

Document Win32 symlink behaviour; adjust tests to take it into a/c. src/ChangeLog addition: 2008-05-21 Aidan Kehoe <kehoea@parhasard.net> * fileio.c (Fmake_symbolic_link): Document behaviour when the underlying OS doesn't support symbolic links. tests/ChangeLog addition: 2008-05-21 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el (featurep): Make sure that working symlinks are available before testing their functionality. Also, don't bomb out on deleting the other temporary files if deleting the first threw an error.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 21 May 2008 16:55:14 +0200
parents 3078fd1074e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 #include "shlobj.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 /* This part of the code must be in C because the C++ interface to COM
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 doesn't work. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 make_link_2 (char *exepath, char *args, char *icon, char *lname)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 IShellLink *sl;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 IPersistFile *pf;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 WCHAR widepath [_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 CoCreateInstance (&CLSID_ShellLink, NULL,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15 CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID *) & sl);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 sl->lpVtbl->QueryInterface (sl, &IID_IPersistFile, (void **) &pf);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18 sl->lpVtbl->SetPath (sl, exepath);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 sl->lpVtbl->SetArguments (sl, args);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 sl->lpVtbl->SetIconLocation (sl, icon, 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 MultiByteToWideChar (CP_ACP, 0, lname, -1, widepath, _MAX_PATH);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 pf->lpVtbl->Save (pf, widepath, TRUE);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 pf->lpVtbl->Release (pf);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 sl->lpVtbl->Release (sl);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 }