annotate netinstall/mklink2.c @ 5067:7d7ae8db0341

add functions `stable-union' and `stable-intersection' to do stable set operations -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (stable-union): New. * cl-seq.el (stable-intersection): New. New functions to do stable set operations, i.e. preserve the order of the elements in the argument lists, and prefer LIST1 over LIST2 when ordering the combined result. The result looks as much like LIST1 as possible, followed (in the case of `stable-union') by any necessary elements from LIST2, in order. This is contrary to `union' and `intersection', which are not required to be order- preserving and are not -- they prefer LIST2 and output results in backwards order.
author Ben Wing <ben@xemacs.org>
date Mon, 22 Feb 2010 21:23:02 -0600
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 }