/*********************************************************
- * Copyright (C) 2002-2021 VMware, Inc. All rights reserved.
+ * Copyright (C) 2002-2022 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
#define CONFNAME_AUTOUPGRADE_ALLOW_UPGRADE "allow-upgrade"
#define CONFNAME_AUTOUPGRADE_ALLOW_ADD_FEATURE "allow-add-feature"
#define CONFNAME_AUTOUPGRADE_ALLOW_REMOVE_FEATURE "allow-remove-feature"
+#define CONFNAME_AUTOUPGRADE_ALLOW_MSI_TRANSFORMS "allow-msi-transforms"
/*
* END upgrader goodies.
/*********************************************************
- * Copyright (C) 1998-2018, 2021 VMware, Inc. All rights reserved.
+ * Copyright (C) 1998-2018, 2021-2022 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
Bool StrUtil_CaselessStartsWith(const char *s, const char *prefix);
Bool StrUtil_EndsWith(const char *s, const char *suffix);
Bool StrUtil_CaselessEndsWith(const char *s, const char *suffix);
+const char * StrUtil_CaselessStrstr(const char *str, const char *strSearch);
Bool StrUtil_IsASCII(const char *s);
Bool StrUtil_VDynBufPrintf(struct DynBuf *b, const char *fmt, va_list args);
/*********************************************************
- * Copyright (C) 1998-2019, 2021 VMware, Inc. All rights reserved.
+ * Copyright (C) 1998-2019, 2021-2022 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
}
+/**
+ *-----------------------------------------------------------------------------
+ *
+ * StrUtil_CaselessStrstr --
+ *
+ * This is a case-insensitive version of strstr in C string.h.
+ *
+ * Results:
+ * return a pointer to the first occurrence of strSearch in str, or NULL
+ * if strSearch does not appear in str. If strSearch is zero length, the
+ * function returns str.
+ *
+ * Side effects:
+ * none
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+const char *
+StrUtil_CaselessStrstr(const char *str, // IN
+ const char *strSearch) // IN
+{
+ size_t len;
+
+ if (strSearch == NULL || *strSearch == '\0') {
+ return str;
+ }
+
+ if (str == NULL || *str == '\0') {
+ return NULL;
+ }
+
+ len = strlen(strSearch);
+ for (; *str; str++) {
+ if (strncasecmp(str, strSearch, len) == 0) {
+ return str;
+ }
+ }
+ return NULL;
+}
+
+
/*
*-----------------------------------------------------------------------------
*
[autoupgrade]
-# The autoupgrade plugin is only available for Windows.
-
# The "allow-upgrade" option controls whether automatic upgrades (or reinstalls)
-# are allowed. The two options "allow-add-feature" and "allow-remove-feature"
-# control whether adding or removing a feature will be allowed. The two latter
-# ones only affect Windows tools.
-
+# are allowed.
#allow-upgrade=true
+
+# The autoupgrade plugin is only available for Windows.
+# The "allow-add-feature" and "allow-remove-feature" control whether adding
+# or removing a feature will be allowed.
+# The allow-msi-transforms option controls whether TRANSFORMS property is
+# allowed.
+
#allow-add-feature=true
#allow-remove-feature=true
+#allow-msi-transforms=false
[deployPkg]