From: "Zeeshan Ali (Khattak)" <zeeshanak@xxxxxxxxx> Instead of hardcoding avatar path and disk, lets get those from application. --- data/install-scripts/fedora.xml | 26 +++++----------- data/install-scripts/windows-cmd.xml | 4 ++- osinfo/libosinfo.syms | 6 +++- osinfo/osinfo_install_config.c | 58 ++++++++++++++++++++++++++++++++++++ osinfo/osinfo_install_config.h | 9 ++++++ 5 files changed, 82 insertions(+), 21 deletions(-) diff --git a/data/install-scripts/fedora.xml b/data/install-scripts/fedora.xml index eef4f4a..734875a 100644 --- a/data/install-scripts/fedora.xml +++ b/data/install-scripts/fedora.xml @@ -112,6 +112,8 @@ reboot <param name="user-login" policy="required"/> <param name="user-password" policy="required"/> <param name="admin-password" policy="required"/> + <param name="avatar-location" policy="optional"/> + <param name="avatar-disk" policy="optional"/> </config> <template filename="fedora.ks"> <xsl:stylesheet @@ -137,23 +139,6 @@ reboot </xsl:choose> </xsl:template> - <xsl:template name="avatar-disk"> - <xsl:choose> - <xsl:when test="os/version > 9"> - <!-- virtio --> - <xsl:text>sda</xsl:text> - </xsl:when> - <xsl:when test="os/version > 6"> - <!-- libata IDE --> - <xsl:text>hda</xsl:text> - </xsl:when> - <xsl:otherwise> - <!-- IDE --> - <xsl:text>hdb</xsl:text> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - <xsl:template name="rootfs"> <xsl:choose> <xsl:when test="os/version > 10"> @@ -229,10 +214,13 @@ else fi # Set user avatar +if test -n <xsl:value-of select="config/avatar-location"/>; then mkdir /mnt/unattended-media -mount /dev/<xsl:call-template name='avatar-disk'/> /mnt/unattended-media -cp /mnt/unattended-media/<xsl:value-of select="config/user-login"/> /var/lib/AccountsService/icons/ +mount <xsl:value-of select='config/avatar-disk'/> /mnt/unattended-media +cp /mnt/unattended-media<xsl:value-of select="config/avatar-location"/> /var/lib/AccountsService/icons/<xsl:value-of select="config/user-login"/> umount /mnt/unattended-media +fi + echo " [User] Language= diff --git a/data/install-scripts/windows-cmd.xml b/data/install-scripts/windows-cmd.xml index ba30795..682f198 100644 --- a/data/install-scripts/windows-cmd.xml +++ b/data/install-scripts/windows-cmd.xml @@ -5,6 +5,8 @@ <config> <param name="admin-password" policy="optional"/> <param name="user-realname" policy="required"/> + <param name="avatar-location" policy="optional"/> + <param name="avatar-disk" policy="optional"/> </config> <template filename="windows.cmd" path-format="dos"> <xsl:stylesheet @@ -17,7 +19,7 @@ sc config TlntSvr start= auto net user <xsl:value-of select="config/user-realname"/> <xsl:text> </xsl:text> <xsl:value-of select="config/admin-password"/> /add /passwordreq:no net localgroup administrators <xsl:value-of select="config/user-realname"/> /add net accounts /maxpwage:unlimited -copy a:\<xsl:value-of select="config/user-realname"/>.bmp "c:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures" +if not "<xsl:value-of select="config/avatar-location"/>"=="" copy "<xsl:value-of select="config/avatar-disk"/>:\<xsl:value-of select="config/avatar-location"/>" "c:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\<xsl:value-of select="config/user-realname"/>.bmp" REGEDIT /S a:\windows.reg EXIT </xsl:template> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms index 093f540..0427a88 100644 --- a/osinfo/libosinfo.syms +++ b/osinfo/libosinfo.syms @@ -325,8 +325,12 @@ LIBOSINFO_0.2.2 { osinfo_entity_get_param_value_enum; osinfo_entity_set_param_enum; - osinfo_install_script_get_path_format; + osinfo_install_config_get_avatar_location; + osinfo_install_config_set_avatar_location; + osinfo_install_config_get_avatar_disk; + osinfo_install_config_set_avatar_disk; + osinfo_install_script_get_path_format; } LIBOSINFO_0.2.1; diff --git a/osinfo/osinfo_install_config.c b/osinfo/osinfo_install_config.c index 0ce8da7..0e1f838 100644 --- a/osinfo/osinfo_install_config.c +++ b/osinfo/osinfo_install_config.c @@ -329,6 +329,64 @@ const gchar *osinfo_install_config_get_hostname(OsinfoInstallConfig *config) OSINFO_INSTALL_CONFIG_PROP_HOSTNAME); } +/** + * osinfo_install_config_set_avatar_location: + * + * Sets the #OSINFO_INSTALL_CONFIG_PROP_AVATAR_LOCATION parameter. + * + * Note that the format of this string is dependent on the installer script + * @config is going to be used with. You can use + * #osinfo_install_script_get_path_format() to find out which format + * does the script expects this string to be in. + * + * Also note that in case of #OSINFO_PATH_FORMAT_DOS, the drive/disk letter + * and the leading ':' must not be included in the path. + */ +void osinfo_install_config_set_avatar_location(OsinfoInstallConfig *config, + const gchar *location) +{ + osinfo_entity_set_param(OSINFO_ENTITY(config), + OSINFO_INSTALL_CONFIG_PROP_AVATAR_LOCATION, + location); +} + +const gchar *osinfo_install_config_get_avatar_location(OsinfoInstallConfig *config) +{ + return osinfo_entity_get_param_value(OSINFO_ENTITY(config), + OSINFO_INSTALL_CONFIG_PROP_AVATAR_LOCATION); +} + +/** + * osinfo_install_config_set_avatar_disk: + * + * Sets the #OSINFO_INSTALL_CONFIG_PROP_AVATAR_DISK parameter. + * + * Note that the format of this string is dependent on the installer script + * @config is going to be used with. You can use + * #osinfo_install_script_get_path_format() to find out which format + * does the script expects this string to be in. In case of + * #OSINFO_PATH_FORMAT_UNIX unix device node names are expected, e.g "/dev/fd0". + * In case of #OSINFO_PATH_FORMAT_DOS drive letters are expected, e.g "A". + */ +void osinfo_install_config_set_avatar_disk(OsinfoInstallConfig *config, + const gchar *disk) +{ + osinfo_entity_set_param(OSINFO_ENTITY(config), + OSINFO_INSTALL_CONFIG_PROP_AVATAR_DISK, + disk); +} + +/** + * osinfo_install_config_get_avatar_disk: + * + * Returns: The value of #OSINFO_INSTALL_CONFIG_PROP_AVATAR_DISK parameter, + * or NULL. + */ +const gchar *osinfo_install_config_get_avatar_disk(OsinfoInstallConfig *config) +{ + return osinfo_entity_get_param_value(OSINFO_ENTITY(config), + OSINFO_INSTALL_CONFIG_PROP_AVATAR_DISK); +} /* * Local variables: diff --git a/osinfo/osinfo_install_config.h b/osinfo/osinfo_install_config.h index 32fe370..2fd49ab 100644 --- a/osinfo/osinfo_install_config.h +++ b/osinfo/osinfo_install_config.h @@ -56,6 +56,8 @@ #define OSINFO_INSTALL_CONFIG_PROP_HOSTNAME "hostname" +#define OSINFO_INSTALL_CONFIG_PROP_AVATAR_LOCATION "avatar-location" +#define OSINFO_INSTALL_CONFIG_PROP_AVATAR_DISK "avatar-disk" typedef struct _OsinfoInstallConfig OsinfoInstallConfig; typedef struct _OsinfoInstallConfigClass OsinfoInstallConfigClass; @@ -152,6 +154,13 @@ void osinfo_install_config_set_hostname(OsinfoInstallConfig *config, const gchar *hostname); const gchar *osinfo_install_config_get_hostname(OsinfoInstallConfig *config); +void osinfo_install_config_set_avatar_location(OsinfoInstallConfig *config, + const gchar *location); +const gchar *osinfo_install_config_get_avatar_location(OsinfoInstallConfig *config); + +void osinfo_install_config_set_avatar_disk(OsinfoInstallConfig *config, + const gchar *disk); +const gchar *osinfo_install_config_get_avatar_disk(OsinfoInstallConfig *config); #endif /* __OSINFO_INSTALL_CONFIG_H__ */ /* -- 1.8.0